Les dates avec MySQL

Il est facile de se prendre les pieds dans le tapis en voulant jouer avec les dates et ce dans n'importe quel langage. Je propose ici, une petite brève afin de présenter quelques fonctions utilisant les dates en MySQL. Dans cette brève un temps est considéré comme une date.

Choisir le bon format

Il existe au moins quatre formats différents pour stocker des dates : timestamp, datetime, date et enfin time. Le premier et le second sont d'après mes connaissances parfaitement identiques depuis MySQL 4.1 et représentent une date avec les heures au format AAAA-MM-JJ HH:mm:ss. Il ne faut donc pas confondre le timestamp Unix qui correspond au nombre de secondes depuis le 1er janvier 1970 avec le timestamp MySQL qui est une date au format classique.

Date, comme son nom l'indique permet de stocker des dates au format AAAA-MM-JJ

Enfin le dernier, time, permet de stocker des heures au format HH:mm:ss

Ajouter des dates

Je propose d'ajouter 4h à la date actuelle (NOW()). Pour cela on peut utiliser la fonction ADDTIME :

  1. SELECT ADDTIME(NOW(), "2:0:0");

On peut naturellement ajouter des jours :

  1. SELECT ADDTIME(NOW(), "30 0:0:0");

La fonction complémentaire est DATESUB :

  1. SELECT SUBTIME(NOW(), "30 0:0:0");

Pour ajouter un mois ou une semaine il faudra utiliser la fonction ADDDATE :

  1. SELECT ADDDATE(NOW(), INTERVAL 1 MONTH);
  1. SELECT ADDDATE(NOW(), INTERVAL 1 WEEK);

Le fonction complémentaire est SUBDATE :

  1. SELECT SUBDATE(NOW(), INTERVAL 1 WEEK);

Intervalle entre deux dates

Pour calculer la différence en jours entre deux dates, on utilisera la fonction DATEDIFF :

  1. SELECT DATEDIFF(NOW(), ADDDATE(NOW(), INTERVAL 1 WEEK));

Pour calculer la différence en temps entre deux dates, on utilisera la fonction TIMEDIFF :

  1. SELECT TIMEDIFF(NOW(), ADDDATE(NOW(), INTERVAL 1 DAY)); // Résultat : 24:00:00

Formater les dates

Pour formater une date on utilisera la fonction DATE_FORMAT. Elle prend deux paramètres, la date à formater et le format :

  1. SELECT DATE_FORMAT(NOW(), "%W %M %Y");

Retrouvez dans la documentation MySQL les différents formats disponibles.

Pour formater un temps on utilisera la fonction TIME_FORMAT :

  1. SELECT TIME_FORMAT(CURRENT_TIME(), "%Hh%h");

Cette fonction permet de retourner des résultats supérieurs à 24 heures :

  1. SELECT TIME_FORMAT(ADDTIME(CURRENT_TIME(), "24:0:0"), "%Hh%h");

UTC_DATE et UTC_TIME

Permettent de récupérer la date et l'heure du temps universel coordonné

 

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

À propos

Photographie

Maxence de Flotte

Développeur cœur PrestaShop

Passionné de nouvelles technologies

PHP, HTML5/CSS3, jQuery, Bootstrap, LESS CSS, ...

Voir mon CV

Mes projets