MYSQL查询:ORDER BY特定日期

时间:2012-08-13 14:19:16

标签: mysql date sql-order-by

我目前正在创建一个可以添加视频的网站。当我添加视频时,我需要发布一个发布日期,格式为:“21-09-2012”。

现在,当我使用简单的ORDER BY命令时,它只对前两位数进行排序。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

听起来您将日期字段存储为字符串。如果是这种情况,那么您需要在尝试订购之前将该值转换为日期:

SELECT  STR_TO_DATE(yourdate, '%d-%m-%Y')
FROM    yourtable

STR_TO_DATE

上的MySQL文档

但是,您应该将日期存储在日期数据类型中而不是字符串值。然后,您将不必执行这些类型的转换。

您也可以在ORDER BY语句中进行转换:

order by STR_TO_DATE(yourdate, '%d-%m-%Y')

答案 1 :(得分:1)

经过非常无聊的研究,我有一个绝妙的主意:

格式:18/11/2014

select id,
       date_string,
       substr(date_string, 1, 2) as day,
       substr(date_string, 4, 2) as month,
       substr(date_string, 7, 4) as year
from myTable
order by year, month, day

您可以选择使用相同的逻辑来添加小时,分钟,秒......