2011-02-23 44 views
29

我有一個名爲timestamp的字段。這是最後一次了一名成員登錄。 我期待能夠在爲類似如何在MySQL中減去6周時間戳?

WHERE timestamp > todays date - 6 weeks 

我怎麼會做這樣的查詢where子句? 我想只包括在過去6周內登錄的用戶。

感謝

回答

6
where column>=date_sub(now(), interval 6 week) 
47

我覺得這句法比date_sub更具可讀性,但無論哪種方式工作。

WHERE timestamp >= NOW() - INTERVAL 6 WEEK 

如果您想通過「今日」(午夜)去,而不是「現在」(當前時間),你可以使用這個

WHERE timestamp >= DATE(NOW()) - INTERVAL 6 WEEK 
+3

那不是需要被WHERE時間戳> = UNIX_TIMESTAMP(NOW() - 間隔6周)? – 2014-02-21 16:12:33

+0

我的答案寫得很好。我知道,因爲我經常這樣做。我建議不要在WHERE子句中添加'UNIX_TIMESTAMP',因爲這是不尋常的,不必這樣做。 – 2014-02-22 23:08:44

+0

很高興知道這個作品。剛剛發現[這個問題](http://stackoverflow.com/questions/3886269/can-i-compare-mysql-timestamp-with-datetime-columns-is-it-bad)的主題。 – 2014-02-25 09:05:48

3

This link表明您會如何使用獲得昨天的時間戳格式爲DATE_ADD(CURDATE(), INTERVAL -1 DAY),因此您的查詢可能是:

WHERE timestamp > DATE_ADD(CURDATE(), INTERVAL -42 DAY) 
+0

這是行不通的?字段時間戳是一個時間戳格式,這是查詢時間戳嗎? – sark9012 2011-02-23 13:31:56

+0

嘗試使用NOW()來代替我想我錯誤地認爲CURDATE()可能是轉換爲時間戳類型 – Neil 2011-02-25 11:00:03

-1

還沒有運氣。您是否嘗試過:

>= DATE_SUB(NOW(), INTERVAL 6 WEEK) 
+2

-1這與5個月前已提供的答案完全一致http://stackoverflow.com/a/5091428/463304 – 2014-07-07 17:32:49

2

您可以使用之間now()

select somevalue 
from yourtable 
where yourtimestamp between now() - interval 1 day and now()