【问题标题】:Order by datetime mysql按日期时间mysql排序
【发布时间】:2012-12-03 16:45:02
【问题描述】:

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

【问题讨论】:

    标签: mysql datetime sql-order-by


    【解决方案1】:
    ORDER BY columnname DESC
    

    哒哒!

    【讨论】:

    • @Samer:它确实有效,但如果你删除UNIX_TIMESTAMP,它也会有效。在这种情况下,它不会改变任何东西
    • 我使用了这个语法并且它工作正常:order by UNIX_TIMESTAMP(my_column_name) desc
    • 正如我所说的 UNIX_TIMESTAMP 在这里毫无意义。 ORDER BY my_column_name DESC就够了
    • 我只添加了 +1 的 Ta-dah!
    • 不知道为什么,但是我的查询只适用于 UNIX_TIMESTAMP,并且字段类型是 DATETIME
    【解决方案2】:
    ORDER BY UNIX_TIMESTAMP(columnname) DESC
    

    需要UNIX_TIMESTAMP,因为mysql将它们作为字符串进行测试(例如9:00出现在16:00之后)

    【讨论】:

      【解决方案3】:

      在我的例子中 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;
      

      【讨论】:

        猜你喜欢
        • 2011-12-01
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多