2012-12-16 60 views
5

我有一个包含日期时间字段类型的表,我要排序的选择语法取决于它降,就像如下:订购日期时间的MySQL

2012年12月12日1点44分二十秒

2012年12月11日1时44分四十秒

2012年12月10日1时四十分36秒

2012年12月9日12点28分一十九秒

2012-12- 09 12:19:21

2012年12月9日12点11分五十秒

2012年12月9日12时00分11秒

2012年12月9日11点59分26秒

2012年12月9日11时57分08秒

2012年12月9日11点55分21秒

回答

20
ORDER BY columnname DESC 

钽大新!

+0

@Samer:它的工作原理实际上,但是如果你删除'UNIX_TIMESTAMP'它会正常工作。在这种情况下,它不会改变 – zerkms

+1

我使用了这种语法,它能正常工作: order by UNIX_TIMESTAMP('my_column_name')desc – Samer

+7

而且正如我在这里所说的'UNIX_TIMESTAMP'毫无意义。 'ORDER BY my_column_name DESC'就足够了 – zerkms

9
ORDER BY UNIX_TIMESTAMP(columnname) DESC 

UNIX_TIMESTAMP是必要的,因为MySQL测试它们作为字符串(例如9:00出现16:00后)

0

在我的情况dtEvent字段是日期时间类型。 这是我发现的唯一的解决方案:

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;