【问题标题】:How to compare variable amount of days using UNIX timestamp (stored as int)如何使用 UNIX 时间戳(存储为 int)比较可变天数
【发布时间】:2011-09-09 18:11:17
【问题描述】:

我需要从 MySQL 数据库中提取可变天数的数据,该数据库将日期作为 UNIX 时间戳存储在 int 列中。

例如,如果我需要最近 5 天的数据,我的查询会是什么?
(所有查询都将从当前日期开始,并返回 x 天)。

【问题讨论】:

  • 在什么操作系统/语言/框架下? (这是作业吗?)
  • 不是硬件,是标签上注明的mysql。
  • mysql中没有unix时间戳数据类型。你确定你指的不是时间戳吗?
  • @ajreal:我知道本机没有 unix 时间戳,但这就是它的存储方式(在 int 列中)。
  • 介意更新您的问题以更清楚吗?

标签: mysql unix-timestamp


【解决方案1】:

时间戳被认为是Date and Time types 之一,因此可以在其上使用任何Date Time Functions

SELECT * FROM your_table
WHERE Ftimestamp_column > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY));

【讨论】:

  • timestamp_column 是否存储为 int 是否重要?该查询似乎对我不起作用。
  • 另外,它是一个 UNIX 时间戳,而不是原生 MySQL 时间戳。
  • ... > UNIX_TIMESTAMP(DATE_SUB(...)) 会修复它。
  • 对不起,我读到的是字面意思 timestampMarc B 给出了答案。我已经更新了我的答案。
  • @kylex 如果你的列被索引,Marc 建议更好,它允许 mysql 在索引上使用
【解决方案2】:

我从未尝试过,但是有一个 MySQL 函数可以将 unix 时间戳转换为 MySQL 日期,然后您可以使用 DATE_SUB() 或其他任何方法。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

【讨论】:

    猜你喜欢
    • 2013-03-13
    • 1970-01-01
    • 2017-02-15
    • 2011-05-16
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多