您好我有问题我的朋友拒绝更改该字段的数据类型到日期所以我有一个问题使用order by,这里是示例数据04-07-2016(mm-dd-yyyy)和字段名称名为regis_date,表名是users,这是我的查询。
SELECT regis_date FROM users ORDER BY regis_date DESC
输出:
array(5) {
[0]=>
object(stdClass)#625 (1) {
["regis_date"]=>
string(10) "04-09-2016"
}
[1]=>
object(stdClass)#622 (1) {
["regis_date"]=>
string(10) "04-08-2018"
}
[2]=>
object(stdClass)#624 (1) {
["regis_date"]=>
string(10) "04-07-2016"
}
[3]=>
object(stdClass)#627 (1) {
["regis_date"]=>
string(10) "04-07-2016"
}
[4]=>
object(stdClass)#621 (1) {
["regis_date"]=>
string(10) "04-06-2017"
}
}
正如您所看到的,查询不正确,然后在谷歌搜索后尝试这个
SELECT regis_date FROM users ORDER BY DATE_FORMAT(regis_date,'%m-%d-%Y') DESC
和这个
SELECT CONVERT(DATE, regis_date, 120) FROM users ORDER BY regis_date
但输出为NULL:'(
答案 0 :(得分:0)
请试一试:
SELECT STR_TO_DATE(regis_date,'%m-%d-%Y') as dt
FROM users
ORDER BY dt DESC
注意:您按VARCHAR
列排序结果。因此,您将获得基于String
排序的结果。因此,我已将varchar
转换为DATE
,然后根据此日期对象对结果集进行排序。