我目前正在创建一个网站,我可以添加视频。当我添加视频时,我需要提供发布日期,格式如下:“21-09-2012”。MYSQL查询:ORDER BY特定日期
现在,当我使用简单的ORDER BY命令时,它只对前两位数字进行排序。
有谁知道我该如何解决这个问题?
我目前正在创建一个网站,我可以添加视频。当我添加视频时,我需要提供发布日期,格式如下:“21-09-2012”。MYSQL查询:ORDER BY特定日期
现在,当我使用简单的ORDER BY命令时,它只对前两位数字进行排序。
有谁知道我该如何解决这个问题?
这听起来像是你将日期字段存储为字符串。如果是的话,那么你就需要尝试在订购前先将该值转换为一个日期:
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')
很无聊的研究之后,我有一个绝妙的主意:
格式: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
可选你可以做同样的逻辑来增加小时,分钟,秒...
什么是t他的发布日期字段的数据类型? – Taryn 2012-08-13 14:20:44
发布日期字段的列是日期数据类型还是其他内容如varchar? – newfurniturey 2012-08-13 14:21:28
不要使用字符串格式来存储日期。使用[日期](http://dev.mysql.com/doc/refman/5.0/en/datetime.html?ff=nopfpls) – 2012-08-13 14:21:31