MySQL get the date n days ago as a timestamp

前端 未结 3 1556
萌比男神i
萌比男神i 2020-12-13 03:18

In MySQL, how would I get a timestamp from, say 30 days ago?

Something like:

select now() - 30

The result should return a timestamp

相关标签:
3条回答
  • 2020-12-13 03:38

    If you need negative hours from timestamp

    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
    

    this

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

    will return negative and positive values, if you need to use x>this_timestamp

    but this

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

    will return only positive, hours

    0 讨论(0)
  • 2020-12-13 03:54

    DATE_SUB will do part of it depending on what you want

    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
    
    0 讨论(0)
  • 2020-12-13 04:02

    You could use:

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

    For unix timestamps or:

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

    For the standard MySQL date format.

    0 讨论(0)
提交回复
热议问题