Pregunta MySQL obtiene la fecha n hace días como una marca de tiempo


En MySQL, ¿cómo obtendré una marca de tiempo, digamos hace 30 días?

Algo como:

select now() - 30

El resultado debe devolver una marca de tiempo.


75
2017-07-08 02:16


origen


Respuestas:


DATE_SUB hará parte de eso dependiendo de lo que quieras

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

145
2017-07-08 03:59



Podrías usar:

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

Para marcas de tiempo de Unix o:

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

Para el formato de fecha estándar de MySQL.


3
2017-07-08 02:27



Si necesita horas negativas de la fecha y hora

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

esta

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

devolverá valores negativos y positivos, si necesita usar x> this_timestamp

pero esto

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

devolverá solo positivo, horas


0
2018-06-19 19:48