Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按日期时间排序mysql_Mysql_Datetime_Sql Order By - Fatal编程技术网

按日期时间排序mysql

按日期时间排序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

我有一个包含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;