2012-08-13 57 views
0

我目前正在创建一个网站,我可以添加视频。当我添加视频时,我需要提供发布日期,格式如下:“21-09-2012”。MYSQL查询:ORDER BY特定日期

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

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

+1

什么是t他的发布日期字段的数据类型? – Taryn 2012-08-13 14:20:44

+0

发布日期字段的列是日期数据类型还是其他内容如varchar? – newfurniturey 2012-08-13 14:21:28

+0

不要使用字符串格式来存储日期。使用[日期](http://dev.mysql.com/doc/refman/5.0/en/datetime.html?ff=nopfpls) – 2012-08-13 14:21:31

回答

4

这听起来像是你将日期字段存储为字符串。如果是的话,那么你就需要尝试在订购前先将该值转换为一个日期:

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

MySQL文档STR_TO_DATE

但是,你应该保存你的日期中的日期数据类型和而不是字符串值。那么你将不必执行这些类型的转换。

您还可以在ORDER转换BY语句本身:

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

如果表格很大,那么性能会很高 – 2012-08-13 14:28:47

+0

@ClintonWard true,它们应该将日期存储在日期数据类型中,但如果他们想要将其转换则是如何转换它。 – Taryn 2012-08-13 14:29:44

+0

@gordon感谢您的编辑。 :) – Taryn 2012-08-13 14:34:20

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 

可选你可以做同样的逻辑来增加小时,分钟,秒...