Fonctions de date/heure en MySQL


précédentsommairesuivant

3. Rétro-compatibilité

Pallier à l'absence de ADDTIME()/SUBTIME()

Pour pallier à l'absence des fonctions ADDTIME()/SUBTIME(), (disponibles à partir de la version 4.1.1) il est possible d'avoir recours aux fonctions UNIX_TIMESTAMP et FROM_UNIXTIME.

Ainsi, on prend la date désirée, la convertit en timestamp, ajoute le nombre de secondes désirées et reconvertit le résultat en date/heure grâce à la fonction FROM_UNIXTIME

 
Sélectionnez
SELECT
  FROM_UNIXTIME(UNIX_TIMESTAMP(uneDate) +3600) AS UneHeurePlusTard
  
FROM uneTable ;

Pallier à l'absence de DATEDIFF()/TIMEDIFF()

Pour pallier à l'absence des fonctions DATEDIFF()/TIMEDIFF(), (disponibles à partir de la version 4.1.1) on a également recours à la fonction UNIX_TIMESTAMP.

Cette fonction retourne le nombre de secondes depuis le 1er janvier 1970. En faisant une soustraction, on obtient le nombre de secondes entre 2 dates. Cependant UNIX_TIMESTAMP retourne un entier non signé et donc pour que la soustraction ne renvoie pas d'erreur en cas de résultat négatif, on est obligé de faire un CAST(... AS SIGNED).

Pour obtenir un nombre de jours, on divise le résultat obtenu par le nombre de secondes dans une journée (soit 86400) :

 
Sélectionnez
SELECT
  FLOOR (
    (  CAST(UNIX_TIMESTAMP(date1) AS SIGNED)
     - CAST(UNIX_TIMESTAMP(date2) AS SIGNED)
    ) / 86400
  ) AS NbJourDiff
  
FROM uneTable ;

Pallier à l'absence de DATE()

La fonction DATE() extrait la partie "date" d'un champ DATETIME (ou d'un champ DATE !). Elle a été introduite avec MySQL 4.1.1.

Il est possible de pallier à son absence en faisant un simple DATE_FORMAT(expr, "%Y-%m-%d").


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Pierre Caboche. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.