我尝试按照yyyy/mm/dd
格式的日期对查询结果进行排序,而我使用此查询无效。
SELECT * FROM table ORDER BY STR_TO_DATE(date, '%y/%m/%d')
我无法更改存储日期的字段类型,因此我希望我可以在数据输入后订购日期。
任何帮助和建议表示赞赏。
答案 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