2012-01-05 64 views
2

減去一個星期,我有一個查詢:從UNIX_TIMESTAMP

SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND end < UNIX_TIMESTAMP() 

有沒有辦法從時間戳減去一個星期,即看是否end比一週前?

回答

15

@ EugenRieck的解決方案將在像夏時制開關那樣的周邊情況下突破。這是更好地使用內置功能,DATE_SUB

SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND 'end' < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK)) 
+3

儘管此解決方案將一直打破:end是int類型(Unix時間戳)和DATE_SUB(NOW(),INTERVAL 1 WEEK)類型爲date 。所以我們需要UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL 1 WEEK)) – 2012-01-05 01:56:22

+0

好點,更正。謝謝! – ceejayoz 2012-01-05 01:57:14

+0

還有+1指出,雖然一週是7天(我想大約2月29日),但不是總是24 * 7小時 – 2012-01-05 01:57:58

6
SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND 'end' < UNIX_TIMESTAMP()-7*24*60*60 
+0

您先生是一個天才,謝謝! – 2012-01-05 01:48:05

+0

夏令時會在特定的幾周內出現這種故障,但不值得爲此付出代價。從我+1取消它。 – ceejayoz 2012-01-05 01:55:30

+0

我只需要減去5分鐘,所以這種方法是完美和快速的 – Christian 2014-06-25 12:30:29