将varchar转换为日期并按转换后的varchar进行排序

时间:2016-07-14 04:07:54

标签: mysql sql

您好我有问题我的朋友拒绝更改该字段的数据类型到日期所以我有一个问题使用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:'(

1 个答案:

答案 0 :(得分:0)

请试一试:

SELECT STR_TO_DATE(regis_date,'%m-%d-%Y') as dt 
FROM users 
ORDER BY dt DESC

注意:您按VARCHAR列排序结果。因此,您将获得基于String排序的结果。因此,我已将varchar转换为DATE,然后根据此日期对象对结果集进行排序。