2009-12-16 58 views
1

現在我有表調用文件 它有時間有這張郵票1260606325 現在我特林得到這在過去的7天加入文件問題是在MySQL選擇

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

其返回零

我該怎麼做

+0

使用在你要跟句子一些標點符號。 – Pawka 2009-12-16 11:33:47

回答

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); 
+0

感謝它的工作greate ++ – 2009-12-16 11:43:53

+0

+1更仔細地閱讀這個問題比我注意到'時間'的數據類型'TIMESTAMP' – 2009-12-16 11:49:14

1

你可以通過time()-(7*86400)來計算PHP的時間並使用該值?

0

試試這個:這取決於數據類型time

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

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

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

SUBDATE第二個參數的默認單位爲天:

SUBDATE(日期,間隔EXPR單元),SUBDATE(表達式,天)

1

你應該在指定單位SUBDATE的第二個參數:

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

如果不指定單位,天是默認設置,以便604800應該是7

+0

它也得到零 – 2009-12-16 11:39:49