Les dates et les heures sont des types de données extrêmement frustrants et SQL ne les rend pas plus faciles à utiliser que d’autres langages. Bien que la date et l’heure soient en fait des types de données complètement différents, elles sont souvent fusionnées en un type de données datetime. Les dates et heures SQL seules sont assez simples même si elles nécessitent un formatage spécial. Cependant, la fusion des deux peut être l’une des tâches les plus douloureuses auxquelles vous serez confronté dans vos premières années. Une bonne règle empirique consiste à n’utiliser une heure et une date ensemble que lorsque vous en avez absolument besoin ou que vous en aurez besoin à l’avenir. Je vais vous expliquer pourquoi les dates et les heures compliquent les choses en une minute. Tout d’abord, regardons à quel point la vie est facile lorsque vous travaillez simplement avec des dates.
Travailler Avec Des Dates SQL
Notre Table « Utilisateurs »:
id | username | first | last | member_since |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-25 |
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
Let’s try to get all of our members before December 25, 2011.
Exemple
SELECT *FROM UsersWHERE member_since < '2011-12-25'
Résultat
id | nom d’utilisateur | premier | dernier | member_since | Créateur d’Internet | Al | Gore | 2011-12-8 |
---|---|---|---|---|
dontMessWithTexas | George | Bush | 2011-7-9 |
D’accord, nous l’avons dit AVANT le 25 décembre 2011, ce qui signifie que la pauvre Hillary n’est pas incluse car elle est ce jour-là. Al a à peine fait la coupe, mais le vieux George était bien avant notre date limite. Je suppose qu’on devrait parler de ce qui s’est passé. Jusqu’à OÙ member_since < ‘2011-12-25′, nous savons ce que nous faisions. On pourrait probablement deviner ce qui se passe ici, mais je vais battre le cheval mort. Nous vérifions notre colonne member_since pour voir si elle est inférieure à, <, notre date, qui a été écrite entre guillemets simples comme ‘2011-12-25’. Souvent, lorsque vous recherchez de l’aide sur Google pour obtenir des dates, vous voyez cette syntaxe appelée « AAAA-MM-JJ », où Y correspond à l’année, M au mois et D au jour, évidemment. Chaque répétition est le symbole d’un espace de caractères vide pour cet élément. Donc, vous ne voulez que 2 chiffres pour le mois parce que cela a du sens, et peut-être que vous ne vous souciez pas des 2 premiers caractères de l’année. Au lieu de cela, vous écrivez simplement, YY pour obtenir 11. Assez facile, sur les merveilleuses DATETIMEs
En utilisant DATETIME en SQL
Notre nouvelle Table « Utilisateurs”:
id | username | first | last | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
3 | dontMessWithTexas | George | Bush | 2011-12-24 16:24:17 |
Maintenant, nous essayons d’obtenir tous nos membres qui se sont connectés avant le 24 décembre 2011 à 13h00.
Exemple
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
Résultat
id | nom d’utilisateur | premier | dernier | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | Créateur d’Internet | Al | Gore | 2011-12-24 11:53:25 |
Pauvre GeorgePoor D’accord, exactement la même syntaxe qu’un dernier avec sauf que nous avons remplacé le nom de la colonne et utilisé une chaîne DATETIME pour comparer avec. Le type de données DATETIME contient tous les mêmes éléments que le type de données DATE plus une chaîne de temps. Communément référencé comme ‘AAAA-MM-JJ HH:MM: SS’ Encore une fois, en guillemets simples et avec un espace séparant la chaîne de date de la chaîne de temps, nous créons notre chaîne de DATE pour comparaison. Hillary et Al font tous les deux la coupe parce qu’ils se sont connectés avant le 24/12/2011 13:00:00′ date et HEURE coupées. C’est beaucoup plus facile ici qu’il n’y paraît en pratique. C’est parce que nous mettons la chaîne DATETIME à la main. SQL a quelques fonctions de DATE avec lesquelles vous pouvez jouer que vous pouvez remplacer notre chaîne par :
Fonctions de DATE SQL importantes
Remarque : Les fonctions de DATE SQL diffèrent considérablement d’une version à l’autre de SQL. Ce sont MySQL.
- CURDATE() – obtient la date actuelle
- CURTIME() – obtient l’heure actuelle
- NOW() – obtient à la fois la date et l’heure (au format DATETIME)
Si vous n’utilisez pas MySQL, envisagez de changer. Je plaisante, en quelque sorte, mais pas de soucis, une simple requête de Google vous aidera à trouver les bonnes fonctions SQL pour votre base de données SQL.