【发布时间】:2016-12-09 12:58:23
【问题描述】:
我有一个问题,但在 stackoverflow 上没有找到解决方案。所以这是我的问题:
如何在我的 PHP 文件中按日期时间 (dd/mm/yy hh:mm:ss) 优先级订购 Varchar? 我有一个带有“registerdate”列的 SQL 表。它的类型是 Varchar (由于其他表问题,无法使用日期时间)。我的 SQL ORDER BY 查询是:
SELECT * FROM users ORDER BY registerdate DESC LIMIT 3
这会导致:
12-11-16 11:03:54
06-12-16 19:05:22
06-12-16 15:03:30
我想要它:
06-12-16 19:05:22
06-12-16 15:03:30
12-11-16 11:03:54
在我的 php 文件中,我使用 $datetime=date("d/m/y H:i:s"); 注册时间在我的桌子上是一个 Varchar,看起来像 03/12/16 12:19:33
我想我必须在我的 SQL 查询中转换它,但我不知道如何。谁能帮我?非常感谢!
-----服务器/SQL 信息-----
Server: Localhost via UNIX socket
Servertype: MariaDB
Serverversie: 10.0.27-MariaDB-cll-lve - MariaDB Server
Protocolversie: 10
【问题讨论】:
-
ORDER BY STR_TO_DATE(registerdate , '%d/%m/%Y %h:%i:%s')
-
谢谢卡马尔。解决方案: ORDER BY STR_TO_DATE(registerdate , '%d/%m/%y %H:%i:%s') 所以大写的 H 代替了小写的 h 和小写的 y 代替了大写的 Y。
-
请记住,性能不会很好。您确实应该将日期时间值存储在
DATETIME(或TIMESTAMP)数据类型中。此评论适用于迄今为止所有建议的解决方案。
标签: sql datetime sql-order-by mariadb varchar