Est-il possible de calculer la différence entre deux horodatages dans Mysql et d'obtenir le résultat de sortie en quelques secondes? comme 2010-11-29 13:16:55 - 2010-11-29 13:13:55 devrait donner 180 secondes.
Je vous remercie
Utilisez fonction UNIX_TIMESTAMP pour convertir le DATETIME en valeur en secondes, à partir du 1er janvier 1970:
SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output
Résultat:
output
-------
180
Un moyen facile de gérer si vous n'êtes pas sûr de la valeur qui est plus grande que l'autre - utilisez la fonction ABS :
SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output
Je ne pense pas que la réponse acceptée soit une bonne solution universelle!
Cela est dû au fait que la fonction UNIX_TIMESTAMP () échoue pour les DATES antérieures au 01/01/1970 (et pour les dates très éloignées à l'aide d'entiers 32 bits). Cela peut se produire facilement le jour de la naissance de nombreuses personnes vivantes.
Une meilleure solution est:
SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')
Qui peut être modifié pour renvoyer le DAY YEAR MOIS HEURE et MINUTE aussi!
La méthode TIMESTAMPDIFF ne fonctionne qu'avec le format datetime. Si vous voulez la différence entre seulement deux fois comme '11: 10: 00 'moins '10: 20: 00' alors utilisez
select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')