Come faccio ad avere la differenza tra due datetimes in MySQL?
Domanda
sto provando questo
SELECT DATEDIFF(second,log.start_time,log.end_time)
as seconds
from log
where log.log_id = "some crazy UUID";
ma ottengo un errore perché non si assume alcuna DATEDIFF()
espr formattatore come secondo.
Così ho provato,
SELECT second(DATEDIFF(second,log.start_time,log.end_time))
as seconds
from log
where log.log_id = "some crazy UUID";
Ma questo non funziona per la formattazione sia.
Soluzione
Credo che si intende utilizzare TIMESTAMPDIFF()
invece di DATEDIFF()
:
SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds
from log
where log.log_id = "some crazy UUID";
Altri suggerimenti
Prova questo
SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID";
DATEDIFF accetta solo due parametri e si passa tre parametri qui.
Come funziona e anche restituisce solo la differenza b / w date non compreso il tempo.
http: //dev.mysql. com / doc / refman / 5.1 / it / data-e-tempo-functions.html
restituisce DATEDIFF()
giorni di differenza.
Usa TIMEDIFF()
o convertire sia i timestamp con TO_SECONDS()
) e ottenere la loro differenza:
SELECT TO_SECONDS(log.end_time) - TO_SECONDS(log.start_time) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID"
;
DATEDIFF :
MSDN , restituisce il conteggio (intero con segno) dei confini datepart specificati incrociate tra lo StartDate e EndDate specificato. La funzione DATEDIFF()
restituisce il tempo tra due date.
Sintassi:
DATEDIFF ( datepart , startdate , enddate )
Si dovrebbe usare TIMEDIFF()
o la funzione TIMESTAMPDIFF()
.
Basta sostituire la funzione TIMESTAMPDIFF()
con DATEFDIFF()