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