MySQL travaille avec des dates
Dates MySQL
La partie la plus difficile lorsque vous travaillez avec des dates est de vous assurer que le format de la date que vous essayez d'insérer correspond au format de la colonne de date dans la base de données.
Tant que vos données ne contiennent que la partie date, vos requêtes fonctionneront comme prévu. Cependant, si une portion de temps est impliquée, cela devient plus compliqué.
Types de données de date MySQL
MySQL est fourni avec les types de données suivants pour stocker une date ou une valeur date/heure dans la base de données :
-
DATE
- format AAAA-MM-JJ -
DATETIME
- format : AAAA-MM-JJ HH:MI:SS TIMESTAMP
- format : AAAA-MM-JJ HH:MI:SS-
YEAR
- format AAAA ou AA
Remarque : Le type de données de date est défini pour une colonne lorsque vous créez une nouvelle table dans votre base de données !
Travailler avec des dates
Regardez le tableau suivant :
Tableau des commandes
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Maintenant, nous voulons sélectionner les enregistrements avec une OrderDate de "2008-11-11" dans le tableau ci-dessus.
Nous utilisons l' SELECT
énoncé suivant :
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Le jeu de résultats ressemblera à ceci :
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Remarque : Deux dates peuvent facilement être comparées s'il n'y a pas de composante temporelle impliquée !
Maintenant, supposons que la table "Orders" ressemble à ceci (notez le composant de temps ajouté dans la colonne "OrderDate") :
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Si nous utilisons la même SELECT
déclaration que ci-dessus :
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
nous n'obtiendrons aucun résultat ! En effet, la requête ne recherche que des dates sans portion horaire.
Conseil : Pour que vos requêtes restent simples et faciles à gérer, n'utilisez pas de composants de temps dans vos dates, sauf si vous y êtes obligé !