MySQL将n日前的date作为时间戳

在MySQL中,如何从30天之前获得时间戳?

就像是:

select now() - 30 

结果应该返回一个时间戳。

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 

我想你是在DATE_SUB之后。

你可以使用:

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

对于unix时间戳或:

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

对于标准的MySQLdate格式。

如果你需要从时间戳负小时

 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 ) ) ) 

将只返回正数,小时