我从来没有真正搞过这种类型的查询,所以我需要一些帮助.我有一个timestamp包含以下内容的列的表
1488693506
1488576676
1488575917
1487563577
1487563170
1487352348
1487352291
1487207322
Run Code Online (Sandbox Code Playgroud)
我使用以下mysql语句
SELECT * FROM table WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 7 DAY))
Run Code Online (Sandbox Code Playgroud)
从我所看到的,这应该返回从我列出的时间戳过去7天内的最近7天的记录,但没有返回任何记录.我究竟做错了什么?
您应该使用from_unixtime函数将日期转换为where条件并查看可读日期格式:
SELECT from_unixtime(`timestamp`)
FROM table
WHERE from_unixtime(`timestamp`) > date_sub(now(), interval 7 day);
Run Code Online (Sandbox Code Playgroud)
它会告诉你:
March, 05 2017 05:58:26
March, 03 2017 21:31:16
March, 03 2017 21:18:37
Run Code Online (Sandbox Code Playgroud)
看到它在这里工作:http://sqlfiddle.com/#!9/d60e91/1
编辑:假设时间戳已编入索引,则编写相同内容的更佳方式可能如下:
SELECT FROM_UNIXTIME(`timestamp`) x
FROM test_t
WHERE timestamp > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4533 次 |
| 最近记录: |