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


How to sort date-time stored as varchar data type in AM/ PM ascending order?

我已经在表中存储了数据。我想将名为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

我该怎么做?

以适当的格式存储数据,即datetime

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

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

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

尝试使用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)