Codeigniter查询在MYSQL中首先显示即将到来的未来日期

时间:2017-04-24 06:51:07

标签: mysql codeigniter datetime

我正在尝试在桌面上显示数据。但在该表中数据应按以下顺序显示
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();

但我没有得到预期的结果。

enter image description here

1 个答案:

答案 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();

为了便于阅读而缩减代码,您可能需要将其命名为一行。

解释:添加了两个额外的列:

  • 当前日期与列值之间的日差异,
  • 如果列值大于当前日期

然后使用这些指标对值进行排序。