问题是在mysql中选择

时间:2009-12-16 11:22:46

标签: php mysql

现在我有表调用文件 它有时间有这个邮票1260606325 现在我想获取过去7天内添加的文件

SELECT * FROM `files` WHERE time > SUBDATE(NOW(),604800)

返回零

我该怎么做

4 个答案:

答案 0 :(得分:4)

查看SUBDATE的作用 - 默认情况下,它的参数为天数。在这种情况下,它还会生成日期时间类型,您似乎只有一个unix时间戳。

mysql> SELECT  SUBDATE(NOW(),604800);
+-----------------------+
| SUBDATE(NOW(),604800) |
+-----------------------+
| 0354-01-27 12:31:30   |
+-----------------------+

你想要

SELECT * FROM `files` WHERE from_unixtime(time) > SUBDATE(NOW(),interval 604800 second);

SELECT * FROM `files` WHERE from_unixtime(time) > SUBDATE(NOW(),7)

SELECT * FROM `files` WHERE  time > (UNIX_TIMESTAMP() - 604800);

答案 1 :(得分:1)

您可以通过time()-(7*86400)计算PHP的时间并使用该值吗?

答案 2 :(得分:1)

您应该在SUBDATE的第二个参数中指定单位:

SELECT * FROM `files` WHERE time > SUBDATE(NOW(), INTERVAL 7 DAY);

如果您未指定单位,则默认为天数,因此604800应为7。

答案 3 :(得分:0)

试试这个:

SELECT * FROM files WHERE time > SUBDATE(CURDATE(), 7)

SELECT * FROM files WHERE time > SUBDATE(NOW(), 7)

取决于time的数据类型。

您可以在MySQL here中找到有关所有日期函数的信息。

SUBDATE的第二个参数的默认单位是天:

  

SUBDATE(日期,INTERVAL expr单位),SUBDATE(expr,天)