Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox
EN CHANTIER
Cette page n'est pas terminée et est en cours d'écriture.

L'utilisation des dates en SQL : Partie 2

Compatible PHP 5. Cliquer pour en savoir plus sur les compatibilités.Par maxkauf68 (Kaufmann), le 11 janvier 2011

Comme vous avez pu le constater, il existe de très nombreuses fonctions nous permettant de manipuler les dates. Utilisées sur des champs de type DATE ou DATETIME par exemple, elles permettent d'extraire très facilement toutes sortes d'informations utiles sur les dates, comme l'année, le numéro du jour du mois, le numéro du jour dans l'année, etc. Il est aussi possible d'effectuer des opérations sur les dates.

Il nous serait possible de voir en détail toutes les fonctions de gestion des dates, mais cela prendrait beaucoup trop de temps. Vous pouvez les trouver dans la documentation de MySQL sur les dates 1). La liste que nous allons voir dans ce cette partie du cours devrait être suffisant pour que vous puissiez acquérir les bases nécessaires.

Prérequis

Pour pouvoir suivre ce tutoriel vous devez déjà avoir une bonne connaissance du langage PHP et MySQL. Vous devez avoir lu auparavant la première partie de ce tutoriel, disponible dans la section “PHP” de ce site.

Les fonctions de gestion des dates

NOW () : obtenir la date et l'heure actuelles

C'est avec cette fonction que nous allons le plus travailler. Prenez donc bien le temps de l'apprendre. Elle va vous permettre d'ajouter la date quand vous insérerez un texte dans votre base de données. Rien de bien compliqué avec la fonction que nous allons étudier, qui est donc la fonction NOW() :

INSERT INTO blog(titre, message, date) VALUES('maxkauf68', 'Message !', NOW())

Cette fonction va alors remplacer la date, par la date et l'heure actuelle au format AAAA-MM-JJ HH:MM:SS.

Vous pouvez aussi utiliser les fonctions CURDATE(), qui renvoie uniquement la date au format AAAA-MM-JJ et CURTIME, qui renvoie uniquement l'heure au format HH:MM:SS.

DAY(), MONTH(), YEAR() : extraire le jour, le mois ou l'année

Vous souhaitez extraire des informations d'une date ? Il n'y a rien de plus facile ! Voici un exemple :

SELECT titre, message, DAY(date) AS jour FROM blog

Grâce à cette fonction, nous allons pouvoir récupérer 3 champs : le titre, le message et le numéro du jour où il a été posté !

HOUR(), MINUTE(), SECOND() : extraire les heures, minutes, secondes

Il est aussi possible d'extraire de la même manière, les heures, minutes et secondes d'un champ de type DATETIME ou TIME.

SELECT titre, message, HOUR(date) AS heure FROM blog

DATE_FORMAT : formater une date

Avec les fonctions que l'on vient de découvrir à l'instant, on pourrait extraire tous les éléments de la date comme ceci :

SELECT titre, message, DAY(date) AS jour, MONTH(date) AS mois, YEAR(date)
AS annee, HOUR(date) AS heure, MINUTE(date) AS minute, SECOND(date)
AS seconde FROM blog

On pourrait ensuite afficher la date dans l'ordre que l'on souhaite en PHP à l'aide du découpage en champs qu'on vient de faire :

<?php
echo $donnees['jour'] . '/' . $donnees['mois'] . '/' . $donnees['annee'] . '...';
?>

Utiliser ce procédé est un peu long et compliqué, mais grâce à la fonction DATE_FORMAT vous pourrez directement adapter la date au format que vous souhaitez. C'est cependant un peu compliqué et il y a plus simple. La fonction DATE_FORMAT vous permet d'adapter directement la date au format que vous préférez.

Voici comment on pourrait l'utiliser :

SELECT titre, message, DATE_FORMAT(date, '%d/%m/%Y %Hh%imin%ss')
 AS date FROM blog

Ainsi, on récupèrerait les dates avec un champ nommé date sous la forme 11/03/2010 15h47min49s. Mais alors, comment ça marche ce bazar ?

* Les symboles %d, %m, %Y (etc.) sont remplacés par le jour, le mois, l'année, etc. Les autres symboles et lettres sont affichés tels quels.

* Il existe beaucoup d'autres symboles, pour extraire par exemple le nom du jour (la plupart du temps en anglais malheureusement, comme “Saturday”), le numéro du jour dans l'année, etc. La liste des symboles disponibles est dans la doc à la section DATE_FORMAT.

DATE_ADD et DATE_SUB : ajouter ou soustraire des dates

Maintenant nous allons voir qu'il est possible d'ajouter ou de soustraire des heures, minutes, secondes, jours, mois ou années à une date. Nous devrons alors pour ce faire, envoyer 2 paramètres à la fonction :

  • la date sur laquelle nous voulons travailler,
  • le nombre à ajouter ainsi que son type.

Nous souhaitons afficher une date d'expiration pour le message que nous avons posté. Cette date correspond à la date où a été posté le message + 15 jours.

Voici comment écrire la requête :

SELECT titre, message, DATE_ADD(date, INTERVAL 15 DAY) AS date_expiration
FROM blog

Le champ date_expiration correspond à la date de l'entrée + 15 jours. Le mot-clé INTERVAL ne doit pas être changé, en revanche vous pouvez remplacer DAY par MONTH, YEAR, HOUR, MINUTE, SECOND, etc. Par conséquent, si vous souhaitez que les messages expirent dans 2 mois :

SELECT pseudo, message, DATE_ADD(date, INTERVAL 2 MONTH) AS date_expiration
FROM minichat

Conclusion

Vous savez maintenant utiliser les dates en SQL et les comprendre. Cela peut être pratique pour votre site internet ou un forum ;)

Les sources

Vous pouvez proposer au téléchargement tout document qui serait bienvenue pour le lecteur, par exemple le fichier .psd photoshop, le .fla pour flash, etc

Mais vous pouvez aussi proposer ces téléchargements tout au long du tutoriel, et pas seulement à la fin.

En savoir plus

Pour des questions ou une aide éventuelle, rendez-vous sur le forum, le lien est juste en dessous. Vos questions profiterons ainsi aux autres lecteurs.