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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top