从Unix时间戳mysql中选择最近7天

Posted

技术标签:

【中文标题】从Unix时间戳mysql中选择最近7天【英文标题】:Select last 7 days from unix timestamp mysql 【发布时间】:2017-03-05 06:10:10 【问题描述】:

我从来没有真正搞砸过这种类型的查询,所以我需要一些帮助。我有一个带有 timestamp 列的表,其中包含以下内容

1488693506
1488576676
1488575917
1487563577
1487563170
1487352348
1487352291
1487207322

我正在使用下面的mysql语句

SELECT * FROM table WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 7 DAY))

据我所见,这应该返回我列出的时间戳的最近 7 天内的最后 7 天记录,但没有返回任何记录。我做错了什么?

【问题讨论】:

你有什么解决办法吗?我也遇到了同样的情况,没有返回记录! 【参考方案1】:

您应该使用from_unixtime 函数将日期转换为where 条件并查看可读的日期格式:

SELECT from_unixtime(`timestamp`) 
  FROM table 
 WHERE from_unixtime(`timestamp`) > date_sub(now(), interval 7 day);

它会告诉你:

March, 05 2017 05:58:26
March, 03 2017 21:31:16
March, 03 2017 21:18:37

在这里查看它的工作原理:http://sqlfiddle.com/#!9/d60e91/1

编辑:假设时间戳被索引,编写相同内容的更优化方法可能如下:

SELECT FROM_UNIXTIME(`timestamp`) x
  FROM test_t 
 WHERE timestamp > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));

【讨论】:

以上是关于从Unix时间戳mysql中选择最近7天的主要内容,如果未能解决你的问题,请参考以下文章

请教大师,MYSQL如何根据UNIX时间戳,判定一周范伟内的数据

如何使用 MySQL 存储 UNIX 时间戳

从 Python 将 unix 时间戳插入 MySQL [重复]

如何每隔一天自动获取 Unix 时间戳?

时间戳的函数中

在php中查找2个unix时间戳之间的天数