我目前正在创建一个可以添加视频的网站。添加视频时,我需要给出发布日期,格式如下:“21-09-2012”。
现在,当我使用简单的 ORDER BY 命令时,它只对前两位数字进行排序。
有谁知道我该如何解决这个问题?
我目前正在创建一个可以添加视频的网站。添加视频时,我需要给出发布日期,格式如下:“21-09-2012”。
现在,当我使用简单的 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
或者,您可以执行相同的逻辑来添加小时、分钟、秒......