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

标签 mysql codeigniter datetime

我正在尝试在表上显示数据。但在该表中数据应按以下顺序显示
1.即将到来的 future 日期从当前日期升序
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

最佳答案

工作查询,经过测试和确认:

$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();

缩进代码以提高可读性,您可能需要将其压缩为一行才能执行。

说明:添加了两个额外的列:

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

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

关于mysql - Codeigniter 查询在 MYSQL 中首先显示即将到来的 future 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581547/

相关文章:

java - JPA 中的事务回滚从不工作

php - 通过ajax jquery从数据库输出数据

php 5.3 fatal error 类 DateTimeZone 未找到

mysql - 时间段的计算 SQL

mysql - 错误 1064,mysql 命令

php - org.json.JSONException : Value <html of type java. lang.String 无法转换为 JSONObject

codeigniter - 如何在 CodeIgniter 中加载类/库?

python - 从 timedelta 构建 Pandas pd.tseries.offsets

mysql - 保存时 View 会被重写

php - 如何在 PHP 中更新其中包含空格的字段