按日期时间排序mysql
我有一个包含datetime字段类型的表,我想对select语法按降序排序,如下所示: 2012-12-12 01:44:20 2012-12-11 01:44:40 2012-12-10 01:40:36 2012-12-09 12:28:19 2012-12-09 12:19:21 2012-12-09 12:11:50 2012-12-09 12:00:11 2012-12-09 11:59:26 2012-12-09 11:57:08 2012-12-09 11:55:21 Ta-dah强>按日期时间排序mysql,mysql,datetime,sql-order-by,Mysql,Datetime,Sql Order By,我有一个包含datetime字段类型的表,我想对select语法按降序排序,如下所示: 2012-12-12 01:44:20 2012-12-11 01:44:40 2012-12-10 01:40:36 2012-12-09 12:28:19 2012-12-09 12:19:21 2012-12-09 12:11:50 2012-12-09 12:00:11 2012-12-09 11:59:26 2012-12-09 11:57:08 2012-12-09 11:55:21 Ta-dah
ORDER BY UNIX_TIMESTAMP(columnname) DESC
需要UNIX\u时间戳,因为mysql将它们作为字符串进行测试(例如9:00
出现在16:00
之后)在我的例子中,dtEvent字段是datetime类型。
这是我找到的唯一解决方案:
SELECT myTable.recordId, myTable.dtEvent
FROM myTable
WHERE myTable.dtEvent IS NOT NULL
ORDER BY CAST(YEAR(myTable.dtEvent) AS UNSIGNED),
CAST(MONTH(myTable.dtEvent) AS UNSIGNED),
CAST(DAY(myTable.dtEvent) AS UNSIGNED)
LIMIT 100;
@萨默尔:它确实有效,但如果您删除UNIX\u时间戳
,它也会有效。在这种情况下,它不会改变任何东西。我使用了这种语法,它工作正常:按UNIX时间戳(my\u column\u name
)排序,正如我所说的UNIX\u时间戳
在这里毫无意义<代码>按我的姓名列订购说明
已足够,我只添加了+1!不知道为什么,但我的查询只使用UNIX_时间戳,字段类型是DATETIME
SELECT myTable.recordId, myTable.dtEvent
FROM myTable
WHERE myTable.dtEvent IS NOT NULL
ORDER BY CAST(YEAR(myTable.dtEvent) AS UNSIGNED),
CAST(MONTH(myTable.dtEvent) AS UNSIGNED),
CAST(DAY(myTable.dtEvent) AS UNSIGNED)
LIMIT 100;