php - 如何在 MySQL 中使用 [] 对 DATETIME 行进行排序

标签 php mysql

我有一个 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/

相关文章:

javascript - 如何使用雅虎托管的 Lexity 更改

php - 乘法输入和显示的功能

javascript - 从随机网站上登录的用户获取数据

php - 发送电子邮件时,无法重新声明 fatal error

php - 如果不存在则获取我们插入的 mongodb 文档的_id,如果已存在则更新

javascript - PHP - 是否可以在一个文件中获取动态生成的值,以便在 if 语句中在另一个文件中使用?

php - 为什么 mysql_fetch_field 会在此查询中耗尽内存?

php - 用户认证 PHP/SQL

mysql - 订单表中的多个mysql计数

mysql insert into语法,什么命令?它是如何工作的