【问题标题】:SQL order by oldest from Unix TimestampsSQL order by old from Unix Timestamps
【发布时间】:2011-02-06 14:56:48
【问题描述】:

如何使用 SQL 按最早的顺序排列结果?我使用的是 unix 时间戳。

谢谢。

【问题讨论】:

  • 2038 年再见,问为什么你的数据库中有负时间戳。哈哈。
  • 我的 unix 时间戳有无符号整数。我做错什么了吗?

标签: sql mysql unix-timestamp


【解决方案1】:

最早的 UNIX 时间戳是最小的,所以你想ORDER BY my_timestamp_column ASC

我不知道为什么到目前为止的两个答案都说按DESC 列排序。

【讨论】:

  • 我不得不说我不知道​​我为什么要提议DESC...也许是因为现在是凌晨 3 点,但是... ;)
  • 这发生在我们最好的人身上 :)
【解决方案2】:

Unix 时间或 POSIX 时间是用于描述时间点的系统,定义为自 1970 年 1 月 1 日午夜预言协调世界时 (UTC) 以来经过的秒数,不包括闰秒

ORDER BY 子句可以使用 ASC 或 DESC,如果你不指定它会默认使用 ASC:

最近的时间戳优先:

SELECT * FROM tableName ORDER BY columnName DESC

最近的时间戳优先:

SELECT * FROM tableName ORDER BY columnName ASC

【讨论】:

  • UNIX 时间戳是自纪元以来的秒数。最老的秒数最短。什么样的大规模歇斯底里导致人们在这里说DESC而不是ASC
  • @jemfinch:你说得对,我在想最古老的意思是更大的数字。但是您是对的,较早的日期是较小的时间戳。已更正。
  • 有点逆向occam的剃刀:如果值得问这个问题,它不能只是一个SELECT * FROM ... ORDER BY。 ...可以吗?
  • @RJH:你显然没有看到这里的一些问题。
【解决方案3】:

您在使用ORDER BY 'unix-time-stamp-field' ASC; 时遇到什么问题?

编辑:jemfinch 是对的,它是ASC

【讨论】:

    【解决方案4】:

    为了在使用unix_timetamp 时获取最早的第一条数据,请运行以下查询:

    Select * FROM tablename order by FROM_UNIXTIME(ts) ASC
    

    这里: ts 响应具有unix_timestamp 的表的列。

    【讨论】:

      【解决方案5】:

      使用带有DESC 修饰符的ORDER BY 子句来反转结果:

      SELECT ... FROM ... ORDER BY timestampCol DESC;
      

      编辑

      当然你应该使用ASC(或者不使用,因为ASC是默认的)... ;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        相关资源
        最近更新 更多