2009-07-08 73 views
70

在MySQL中,如何從30天之前獲得時間戳?MySQL獲取n天前的日期作爲時間戳

喜歡的東西:

select now() - 30 

結果應該返回一個時間戳。

+1

什麼時間戳的格式?使用MySQL DATE函數的人員熟悉的格式是UNIX樣式時間戳。 – joebert 2009-07-08 02:22:30

+0

我在MySQL時間戳之後。 – 2009-07-08 13:15:44

回答

138

DATE_SUB將取決於你想要什麼

mysql> SELECT DATE_SUB(NOW(), INTERVAL 30 day); 
2009-06-07 21:55:09 

mysql> SELECT TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day)); 
2009-06-07 21:55:09 

mysql> SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day)); 
1244433347 
3

你可以使用:

SELECT unix_timestamp(now()) - unix_timestamp(maketime(_,_,_)); 

對於UNIX時間戳或:

SELECT addtime(now(),maketime(_,_,_)); 

對於標準的MySQL日期格式。

0

如果需要從時間戳負小時做它的一部分

mysql>SELECT now() , FROM_UNIXTIME(1364814799) , HOUR(TIMEDIFF(now() , FROM_UNIXTIME(1364814799))) , TIMESTAMPDIFF(HOUR , now() , FROM_UNIXTIME(1364814799)) 
2013-06-19 22:44:15  2013-04-01 14:13:19  1904 -1904 

TIMESTAMPDIFF(HOUR , now() , FROM_UNIXTIME(1364814799)) 

將返回正值和負值,如果您需要使用x> this_timestamp

但這

HOUR(TIMEDIFF(now() , FROM_UNIXTIME(1364814799))) 

將只返回正數,小時