我有一个 mysql“用户”表,如下例所示:
id | user | created
100 | user001 | [27-01-2016 04:30 PM]
101 | user005 | [19-05-2017 09:28 AM]
102 | user019 | [09-10-2015 03:29 PM]
103 | user029 | [18-11-2017 05:40 PM]
我想通过创建的行按降序排列该表,如下所示:
id | user | created
103 | user029 | [18-11-2017 05:40 PM]
101 | user005 | [19-05-2017 09:28 AM]
100 | user001 | [27-01-2016 04:30 PM]
102 | user019 | [09-10-2015 03:29 PM]
我尝试使用 DATE_FORMAT:
SELECT id,user,DATE_FORMAT(created,"%d %m %Y") AS created FROM users ORDER by created desc
但是什么也没显示,我怎样才能得到它?
我需要一些帮助。
最佳答案
这有效:
SELECT `id`, `user`, DATE_FORMAT(STR_TO_DATE(MID(`created`, 2, 19), '%d-%m-%Y %h:%i %p'), '%d-%m-%Y %h:%i %p')
AS `created:` FROM `users` ORDER BY STR_TO_DATE(`created:`,'%d-%m-%Y %h:%i %p') DESC
这是一个工作 SQL Fiddle .
说明:
MID()
MySQL 函数返回字符串的中间部分,因此我们可以轻松地去掉 []
。之后,STR_TO_DATE()
函数将返回的string
解析为DATETIME
格式(%p
用于上午/下午
)。返回值的格式不正确,至少不是您希望的格式。因此,我们然后使用 DATE_FORMAT()
来格式化输出。最后,我们再次使用 STR_TO_DATE()
进行排序,因为 created:
作为 string
返回。
我还将您的 created
输出列更改为 created:
,因为如果它们名称相同,它将无法工作。
关于php - 如何在 MySQL 中使用 [] 对 DATETIME 行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014506/