代码之家  ›  专栏  ›  技术社区  ›  Ben Noland

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

  •  82
  • Ben Noland  · 技术社区  · 15 年前

    在MySQL中,如何获取时间戳,比如30天前?

    类似:

    select now() - 30
    

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

    3 回复  |  直到 10 年前
        1
  •  157
  •   Justin Giboney    15 年前

    约会小组会根据你想要的做一部分

    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
    
        2
  •  3
  •   hundredwatt    15 年前

    你可以使用:

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

    对于Unix时间戳或:

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

    对于标准的MySQL日期格式。

        3
  •  0
  •   Petre Sosa    11 年前

    如果您需要时间戳的负小时数

    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>此时间戳,将返回负值和正值

    但这

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

    只返回正值,小时