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.

Les dates en SQL (Partie 1)

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

Lorsque vous avez créé vos bases de données vous avez utilisé différents types de champs, comme les “INT” (nombre entier), les “VARCHAR” (texte long) et “TEXT” (texte court). Vous avez surement remarqué qu'il y avait bien d'autres possibilités. Dans ce tutoriel nous allons parler des dates, qui sont sans aucun doute beaucoup plus difficiles à manier, mais pourtant elles sont tellement indispensables. Par exemple, pour pouvoir stocker l'heure et le jour précis auquel une news a été postée sur un forum. Nous ferons d'abord le tour des types de champs à connaître pour stocker des dates avec MySQL et nous verrons comment les utiliser. Nous pourrons ensuite découvrir de nouvelles fonctions SQL dédiées aux dates.

Prérequis

Pour pouvoir suivre ce tutoriel vous devez déjà avoir une légère connaissance du langage PHP et de MySQL.

Les champs de type date

Il est possible de modifier la structure d'une table après l'avoir créé. On peut y ajouter ou y supprimer des champs.

Un formulaire apparaît, vous proposant de créer un nouveau champ. C'est l'occasion de passer en revue les différents types de champs qui permettent de stocker des dates.

Les différents types de date

Voici les différents types de dates que peut stocker MySQL :

  • DATE : stocke une date au format AAAA-MM-JJ (Année-Mois-Jour).
  • TIME : stocke un moment de la journée au format HH:MM:SS (Heures:Minutes:Secondes).
  • DATETIME : stocke une combinaison d'une date et d'un moment de la journée au format AAAA-MM-JJ HH:MM:SS. Ce type de champ est donc plus précis.
  • TIMESTAMP : stocke une date et un moment de la journée sous le format AAAAMMJJHHMMSS.
  • YEAR : stocke une année, soit au format AA, soit au format AAAA.

Effectivement, il y a beaucoup de choses à retenir. Mais, pour l'instant je ne vous demande de retenir une deux types de date : – Le type DATE : vous pouvez l'utiliser quand vous n'avez pas besoin de l'heure exacte de la journée. – Le type DATETIME : vous pouvez l'utiliser quand vous avez besoin de connaître le moment exact de la journée à la seconde près.

Par contre, bien que cela fonctionne sous MySQL, je vous déconseille d'appeler votre champ « date », car il risque d'y avoir des confusions puisque c'est également un mot-clé du langage SQL.

Utilisation des champs de date en SQL

Nous utilisons les champs de type date exactement comme les chaînes de caractères : il faut donc les entourer d'apostrophes. Vous devez écrire la date dans le format du champ.

Par exemple, pour un champ de type DATE :

SELECT titre, message, date FROM blog WHERE date = '2000-01-01'

… vous renverra la liste des messages postés le 01/01/2000 (01 janvier 2000).

Si le champ est de type DATETIME :

SELECT titre, message, date FROM blog WHERE date = '2000-01-01 13:13:13'

… vous renverra la liste des messages postés le 01/01/2000 à 13h13min13s.

C'est que dans ce type de cas là, les champs DATE et DATETIME ne sont pas vraiment utiles.

Dans le cas présent, ces deux mot-clé vont nous être utiles, car ils vont nous permettre de récupérer tous les messages postés après la date :

SELECT titre, message, date FROM blog WHERE date >= '2000-01-01 13:13:13'

On peut aussi récupérer la liste de tous les messages posté entre le 01/01/2000 13:13:13 et le 02/01/2000 13:13:13 :

SELECT titre, message, date FROM blog WHERE date >= '2010-04-02 00:00:00'
AND date <= '2010-04-18 00:00:00'

Dans le langage SQL, il existe un mot-clé « BEETWEEN » qui permet de récupérer des données comprises entre deux intervalles. On pourrait écrire la requête précédente comme ceci :

SELECT titre, message, date FROM blog WHERE date BETWEEN '2010-04-02 00:00:00' AND '2010-04-18 00:00:00'

Ce qui veut dire que l'on va pouvoir récupérer tous les messages dont la date est comprise entre le 01/01/2000 13:13:13 et le 02/01/2000 13:13:13. Cette syntaxe est utilisable sur les champs contenant des nombres.

Il est aussi possible d'insérer une entrée contenant une date, en utilisant la syntaxe suivante :

INSERT INTO blog(pseudo, message, date) VALUES('maxkauf68',
'Message !', '2000-01-01 13:13:13')

Et voilà, ce n'est pas plus compliqué que ça !

Conclusion

Vous pouvez dès à présent utiliser les dates en SQL pour stocker des informations sur des messages postés sur votre forum ou sur votre site. Utile, non ? ;)

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.