MySQL将n天前的日期作为时间戳

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

就像是:

select now() - 30

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

Ben Noland asked 2019-09-11T11:38:32Z
3个解决方案
161 votes

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
Justin Giboney answered 2019-09-11T11:38:47Z
3 votes

你可以使用:

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

对于unix时间戳或:

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

对于标准的MySQL日期格式。

answered 2019-09-11T11:39:18Z
0 votes

如果你需要从时间戳开始的负数小时

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

将只返回正数,小时数

Petre Sosa answered 2019-09-11T11:40:08Z
translate from https://stackoverflow.com:/questions/1095831/mysql-get-the-date-n-days-ago-as-a-timestamp