SQL TIMEDIFF()

La fonction TIMEDIFF() utilisée en SQL permet de calculer la différence entre 2 heures distinctes. Les 2 arguments de la fonction peuvent soit être des heures (TIME) ou des dates avec heure (DATETIME), le résultat sera une heure comprise entre “-838:59:59” et “838:59:59”.

Syntaxe

La syntaxe d’utilisation au sein d’une requête SQL est la suivante :

SELECT TIMEDIFF(heure1, heure2);

Voici quelques exemples typiques :

SELECT TIMEDIFF("HH:MM", "HH:MM"); -- format de la réponse : "HH:MM"
SELECT TIMEDIFF("HH:MM:SS", "HH:MM:SS"); -- format de la réponse : "HH:MM:SS"
SELECT TIMEDIFF("YYYY-MM-DD HH:MM", "YYYY-MM-DD HH:MM"); -- format de la réponse : "HH:MM"
SELECT TIMEDIFF("YYYY-MM-DD HH:MM:SS", "YYYY-MM-DD HH:MM:SS"); -- format de la réponse : "HH:MM:SS"

Exemple de comparaisons de date et heure

Cette fonction de date/heure se révèle utile pour comparer 2 heures distinctes. Une application peut avoir besoin d’un tel comparatif pour estimer le temps de réponse entre 2 événements.

Voici des exemples concrets d’usages, incluant les résultats :

SELECT TIMEDIFF("10:12:13", "10:11:12"); -- résultat : 00:01:01
SELECT TIMEDIFF("10:11:12", "10:12:13"); -- résultat : -00:01:01
SELECT TIMEDIFF("10:15", "10:05"); -- résultat : 00:10
SELECT TIMEDIFF("2018-09-16 10:12:13", "2018-09-13 10:11:12"); -- résultat : 72:01:01

Dans ces résultats, il est possible de constater que le format du résultat peut s’adapter au format indiquée en entré.

Exemple de comparaison avec l’heure courante

La fonction TIMEDIFF() est également très pratique pour comparer l’heure actuelle avec une heure spécifiée. Un usage courant peut consister à afficher la durée comparé à l’heure actuelle.

SELECT TIMEDIFF(CURTIME(), "23:00");

Dans l’exemple ci-dessus, une application pourrait ainsi spécifier à quelle moment un message à été envoyé comparé à l’heure courante.

Il peut aussi être possible d’utiliser cette fonction au sein d’une recherche avec WHERE pour n’obtenir que les résultats récents.

SELECT *
FROM table_journaliere
WHERE TIMEDIFF(CURTIME(), date_ajout) < "00:30"

La requête SQL ci-dessus permet d’obtenir tous les enregistrements ajouté il y a moins de 30 minutes sur cette table contenant des données journalières.

Partager