如何按AM / PM升序对存储为varchar数据类型的日期时间进行排序?

时间:2016-04-01 06:15:55

标签: php mysql

我已将数据存储在我的表格中。我想将名为new_meeting_time的列排序为varchar。我有一个查询SELECT * FROM table_name ORDER BY new_meeting_time ASC并给我以下输出:

      1. 17-03-2016 01:26 PM
      2. 17-03-2016 01:31 PM
      3. 17-03-2016 01:34 PM
      4. 17-03-2016 01:44 PM
      5. 17-03-2016 10:33 AM    

但我希望按以下顺序获取数据:

        1. 17-03-2016 10:33 AM  
        2. 17-03-2016 01:26 PM
        3. 17-03-2016 01:31 PM  
        4. 17-03-2016 01:34 PM
        5. 17-03-2016 01:44 PM

我该怎么做?

3 个答案:

答案 0 :(得分:5)

以适当的格式存储您的数据,日期时间

其他答案的解决方案在性能上非常糟糕。

数据库是一种很好的机制。一个人应该正确使用它。如果你问如何利用马来驾驶汽车,那么正确的答案是"购买汽油"。

答案 1 :(得分:0)

SELECT *
FROM table_name
ORDER BY STR_TO_DATE(new_meeting_time, '%d-%m-%Y %h:%i:%s') ASC

答案 2 :(得分:0)

使用STR_TO_DATE尝试此操作。

SELECT * FROM table_name ORDER BY STR_TO_DATE(new_meeting_time,'%d-%m-%Y %h:%i %p');

演示此功能的效果:

mysql> select STR_TO_DATE('17-03-2016 01:26 PM','%d-%m-%Y %h:%i %p');
+--------------------------------------------------------+
| STR_TO_DATE('17-03-2016 01:26 PM','%d-%m-%Y %h:%i %p') |
+--------------------------------------------------------+
| 2016-03-17 13:26:00                                    |
+--------------------------------------------------------+
1 row in set (0.00 sec)
相关问题