我正在尝试在桌面上显示数据。但在该表中数据应按以下顺序显示
1.即将到来的未来日期从当前日期升序
2.过去日期
示例 - 今天约会2017-04-24
结果如下:
1 2017-04-26
2 2017-04-28
3 2017-05-03
4 2017-08-24
5 2016-06-26
我的查询是 -
$this->db->select('*')->from('dnms_domains');
$this->db->where('is_status',0);
$this->db->order_by('IF(expiry_date <=DATE(NOW()), 0, 1), expiry_date DESC');
$query = $this->db->get();
//echo($this->db->last_query());
//exit;
return $query->result();
但我没有得到预期的结果。
答案 0 :(得分:2)
工作查询,经过测试和确认:
$query = $this->db->query('select *, DATEDIFF(expiry_date, CURRENT_DATE) as diff,
DATEDIFF(expiry_date, CURRENT_DATE) >= 0 as di
from dmns_domains order by di desc,
case when di = 1 then -1 * diff
else diff
end desc');
return $query->result();
为了便于阅读而缩减代码,您可能需要将其命名为一行。
解释:添加了两个额外的列:
然后使用这些指标对值进行排序。