【问题标题】:MySQL datetime field query sort by hour:minuteMySQL datetime 字段查询按小时:分钟排序
【发布时间】:2013-01-25 16:20:57
【问题描述】:

我有一张这样的桌子:

id  date_time
1   2/11/2013 7:05
2   2/11/2013 7:00
3   2/12/2013 7:00
4   2/14/2013 7:00
5   2/16/2013 7:00
6   2/17/2013 7:00
7   2/12/2013 7:05
8   2/14/2013 7:05
9   2/15/2013 7:05
10  2/16/2013 7:05
11  2/17/2013 7:05
12  2/13/2013 7:00
13  2/15/2013 7:00
14  2/13/2013 7:05

我需要按 HOUR:MINUTE 排序,而不是按 DATE 排序,所以我会在输出中得到类似的结果:

2/11/2013 7:00
2/12/2013 7:00
2/13/2013 7:00
2/14/2013 7:00
2/15/2013 7:00
2/16/2013 7:00
2/17/2013 7:00
2/11/2013 7:05
2/12/2013 7:05
2/13/2013 7:05
2/14/2013 7:05
2/15/2013 7:05
2/16/2013 7:05
2/17/2013 7:05

有没有办法直接用 MySQL 对输出进行排序?...我知道一旦我得到查询结果就可以通过 PHP 来做,但只是想知道 MySQL 是否可以做类似的事情?

我试过这样的查询:

SELECT * FROM my_table WHERE (date_time BETWEEN '$date_check_low' AND '$date_check_high') ORDER BY hour(date_time) ASC

但它会产生奇怪的结果...

【问题讨论】:

    标签: mysql sql sorting mysqldatareader


    【解决方案1】:
    ORDER BY HOUR(date_time), MINUTE(date_time), date_time
    

    ORDER BY TIME(date_time), date_time
    

    【讨论】:

    • 纯代码答案在 Stackoverflow 上的价值很低,因为它们对教育/授权成千上万的未来研究人员几乎没有作用。
    【解决方案2】:

    试试这个:

    SELECT *
    FROM my_table
    WHERE (date_time BETWEEN '$date_check_low' AND '$date_check_high')
    ORDER BY time(date_time),
             date_time;
    

    【讨论】:

    • 纯代码答案在 Stackoverflow 上的价值很低,因为它们对教育/授权成千上万的未来研究人员几乎没有作用。将变量直接注入查询可能会导致漏洞/不稳定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2013-11-08
    • 2015-02-14
    • 2015-05-05
    相关资源
    最近更新 更多