2012-06-19 74 views
0

我尝试按格式为yyyy/mm/dd的日期排序查询的结果,并且我正在使用此查询无济于事。MySQL排序查询varchar保存日期

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

我不能改变存储日期的字段的类型,所以我希望我可以订购日期后数据输入。

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

回答

3

如果日期是这种格式,你不需要将它转换为日期,当然?该格式将字母顺序排序,假设它为0填充...(即七月是2012 2012/07/03 7月3日...)

所以,你可以去:

select * from table order by date 

什么类型字段是你的date字段:你确定它是一个varchar

假设它是一个varchar,你可以工作,什么是会走错了:

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

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

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

它应该工作。但如前所述,您不必转换为排序。

+1

1,因为此日期格式的选择通常是专门做,因为它是自然排序(这并不意味着它是在一个DB其提供的日期格式正确的选择) 。 –

0

尝试用资本Y:

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

小写Y是为YY,大写字母YYYY。

-1

SELECT * FROM表ORDER BY日期