2015-08-21 101 views
-2

USERSSQL的最後4週日期列

ID TIMEMODIFIED 
    1 1400481271 
    2 1400481489 
    3 1400486453 
    4 1400486525 
    5 1401777484 

我已經timemodified領域,從timemodified,我需要從今天的日期以獲得過去4周的行。

SELECT id FROM USERS 
WHERE FROM_UNIXTIME(timemodified,'%d-%m-%Y') >= curdate() 
AND FROM_UNIXTIME(timemodified,'%d-%m-%Y') < curdate()-1 
+2

你用什麼rdbms? – Marusyk

+0

SELECT ID FROM YOUR_TABLE其中ID>(nowDateTImeSecound-4weekSecound) – HaRsH

+0

日期函數是特定於rdbms的。你使用哪種rdbms? – ughai

回答

0

您的時間已經是Unix時間戳格式。請記住,將[TIMEMODIFIED]當前日期轉換爲Unix時間戳進行比較效率會更高。另外,除非[TIMEMODIFIED]可以在未來,否則不需要檢查任何上限。

嘗試:

-- 60x60x24x7x4 = 2419200 seconds in four weeks 
SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200; 

SELECT id FROM USERS 
WHERE timemodified >= @unix_four_weeks_ago; 

NB。四個星期前(即今天 - 28天)在這個答案時是1,437,696,000(7月24日)。您提供的樣本中的最新記錄的時間戳記可追溯到2014年6月3日,因此查詢不會返回任何這些記錄。

+0

Adam Frederick Wiseman - 我們怎麼寫SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;在PHP中,它不工作,但在SQL中,它工作 –

+0

如果你需要通過PHP調用這個特定的語句,你可以嘗試:'SELECT ID FROM USERS WHERE timemodified> =(UNIX_TIMESTAMP(curdate()) - 2419200 );' –