MySQL按顺序查询varchar保存日期

时间:2012-06-19 08:23:01

标签: mysql

我尝试按照yyyy/mm/dd格式的日期对查询结果进行排序,而我使用此查询无效。

SELECT * FROM table ORDER BY STR_TO_DATE(date, '%y/%m/%d')

我无法更改存储日期的字段类型,因此我希望我可以在数据输入后订购日期。

任何帮助和建议表示赞赏。

3 个答案:

答案 0 :(得分:3)

如果日期采用该格式,您无需将其转换为日期吗?该格式将按字母顺序排序,假设它为0填充...(即2012年7月3日是2012年7月3日......)

所以你可以去:

select * from table order by date

您的date字段属于哪种类型的字段:您确定它是varchar吗?

假设它是varchar,您可以通过以下方式找出出错的地方:

select str_to_date(date, '%y/%m/%d') from table 

你(应该)获取所有NULL,因为%y是错误的。尝试:

select str_to_date(date, '%Y/%m/%d') from table

它应该有效。但如上所述,您不必转换为排序。

答案 1 :(得分:0)

尝试使用大写Y:

SELECT * FROM table ORDER BY STR_TO_DATE(date, '%Y/%m/%d')

小写Y代表yy,大写代表yyyy。

答案 2 :(得分:-1)

SELECT * FROM table ORDER BY date