2011-03-16 3 views
2

J'essaie cetteComment obtenir la différence entre deux datetime dans MYSQL?

SELECT DATEDIFF(second,log.start_time,log.end_time) 
as seconds 
from log 
where log.log_id = "some crazy UUID"; 

mais je reçois une erreur, car DATEDIFF() accepte pas expr formatter comme seconde.

donc j'ai essayé,

SELECT second(DATEDIFF(second,log.start_time,log.end_time)) 
as seconds 
from log 
where log.log_id = "some crazy UUID"; 

Mais cela ne fonctionne pas pour le formatage soit.

+2

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff –

Répondre

6

Je pense que vous vouliez utiliser TIMESTAMPDIFF() au lieu de DATEDIFF():

SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds 
from log 
where log.log_id = "some crazy UUID"; 
+1

+1 pour utiliser un seul appel de fonction. –

+0

Voilà pourquoi je l'ai utilisé. Bonne réponse, merci. – davidahines

3

Essayez cette

SELECT TIME_TO_SEC(TIMEDIFF(log.start_time, log.end_time)) AS seconds 
FROM log 
WHERE log.log_id = "some crazy UUID"; 
2

DATEDIFF() renvoie jours de différence.

Utilisez TIMEDIFF() ou convertir les horodateurs avec TO_SECONDS()) et obtenir leur différence:

SELECT TO_SECONDS(log.end_time) - TO_SECONDS(log.start_time) AS seconds 
    FROM log 
    WHERE log.log_id = "some crazy UUID" 
; 
1

DATEDIFF:

De l'msdn, il renvoie le nombre (entier signé) du spécifié les limites de datepart croisées entre la date de début et la date de fin spécifiées. La fonction DATEDIFF() renvoie l'heure entre deux dates. Syntaxe:

DATEDIFF (datepart , startdate , enddate) 

Vous devez utiliser TIMEDIFF() ou TIMESTAMPDIFF() fonction.
Il suffit de remplacer la fonction TIMESTAMPDIFF() avec DATEFDIFF()

Questions connexes