Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
d4:c03 [2025/09/24 21:49] – dthevenot | d4:c03 [2025/09/25 15:42] (Version actuelle) – [Prérequis] dthevenot | ||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
MariaDB propose plusieurs types de données pour gérer les dates et heures : | MariaDB propose plusieurs types de données pour gérer les dates et heures : | ||
- | | + | * DATE : date (AAAA-MM-JJ) |
- | - DATETIME : date + heure (AAAA-MM-JJ HH:MM:SS) | + | |
- | - TIME : durée ou heure du jour | + | |
- | - TIMESTAMP : similaire à DATETIME mais dépend du fuseau horaire | + | |
- | - YEAR : année sur 4 chiffres | + | |
< | < | ||
===== Manipuler les dates ===== | ===== Manipuler les dates ===== | ||
Ligne 26: | Ligne 26: | ||
* SELECT DATE_ADD(NOW(), | * SELECT DATE_ADD(NOW(), | ||
* SELECT DATE_FORMAT(NOW(), | * SELECT DATE_FORMAT(NOW(), | ||
+ | * SELECT YEAR(champDate); | ||
+ | * SELECT MONTH(champDate); | ||
+ | * ... | ||
+ | |||
+ | Exemples avec des valeurs de dates précises : | ||
+ | * SELECT YEAR(' | ||
+ | * SELECT MONTH(' | ||
+ | * SELECT DAY(' | ||
+ | * SELECT WEEKDAY(' | ||
+ | * SELECT DAYOFWEEK(' | ||
+ | * SELECT HOUR(' | ||
+ | * SELECT MINUTE(' | ||
+ | * SELECT SECOND(' | ||
+ | * Mettre en forme une valeur de date : SELECT DATE_FORMAT(' | ||
+ | |||
+ | ===== ===== | ||
==== Exercices sur les dates ==== | ==== Exercices sur les dates ==== | ||
=== Gestion commerciale === | === Gestion commerciale === | ||
Ligne 34: | Ligne 50: | ||
- Trouver tous les achats réalisés au cours des 30 derniers jours. | - Trouver tous les achats réalisés au cours des 30 derniers jours. | ||
- Calculer combien de jours se sont écoulés depuis la dernière commande de chaque client. | - Calculer combien de jours se sont écoulés depuis la dernière commande de chaque client. | ||
+ | ===== ===== | ||
=== Indépendamment de la base précédente : === | === Indépendamment de la base précédente : === | ||
- | - Afficher la date du premier jour du mois précédent (Par exemple, si nous sommes le 20 mars 2017, la requête doit afficher 2017-2-01 - cette réponse est éligible à la qualité de réponse parfaite si elle fonctionne même en janvier) | ||
- | - Afficher la date du prochain jeudi (le langage SQL peut utiliser des structures conditionnelles, | ||
- | - Afficher la date du premier jour du mois précédent. | ||
- | - Afficher la date du prochain lundi. | ||
- Écrire une requête qui ajoute 6 mois à la date actuelle. | - Écrire une requête qui ajoute 6 mois à la date actuelle. | ||
+ | - Afficher la date du premier jour du mois précédent (Par exemple, si nous sommes le 20 mars 2017, la requête doit afficher 1er février 2017 - cette réponse est éligible à la qualité de réponse parfaite si elle fonctionne même en janvier) | ||
+ | - Afficher la date du prochain jeudi (le langage SQL peut utiliser des structures conditionnelles, | ||
+ | |||
===== La programmation d’événements ===== | ===== La programmation d’événements ===== | ||
- | + | La programmation d’événements (events) permet de planifier dans le temps l' | |
- | La programmation d’événements (events) permet de planifier dans le temps l' | + | |
renouveler éventuellement de façon périodique. Ils nécessitent que le planificateur d’événements (event_scheduler) soit activé. | renouveler éventuellement de façon périodique. Ils nécessitent que le planificateur d’événements (event_scheduler) soit activé. | ||
+ | ===== ===== | ||
==== Utilité ==== | ==== Utilité ==== | ||
- | |||
Voici quelques exemples de tâches que vous pourrez mettre en œuvre, sans avoir à passer par des artifices de programmation de plus ou moins bonnes qualités. Vous pourrez, par exemple : | Voici quelques exemples de tâches que vous pourrez mettre en œuvre, sans avoir à passer par des artifices de programmation de plus ou moins bonnes qualités. Vous pourrez, par exemple : | ||
* Programmer des requêtes de suppression pour délester de vieilles discussions sur un forum. | * Programmer des requêtes de suppression pour délester de vieilles discussions sur un forum. | ||
Ligne 54: | Ligne 69: | ||
* Analyser et optimiser l' | * Analyser et optimiser l' | ||
* … | * … | ||
+ | ===== ===== | ||
==== Prérequis ==== | ==== Prérequis ==== | ||
+ | < | ||
* Le programmateur d’événements (event scheduler) doit être actif | * Le programmateur d’événements (event scheduler) doit être actif | ||
* L' | * L' | ||
* Pour définir un événement dans une base, l' | * Pour définir un événement dans une base, l' | ||
+ | </ | ||
__Vérification__ : SHOW VARIABLES LIKE ' | __Vérification__ : SHOW VARIABLES LIKE ' | ||
__Activation__ : SET GLOBAL event_scheduler = ON; | __Activation__ : SET GLOBAL event_scheduler = ON; | ||
+ | ===== ===== | ||
==== Syntaxe de création d’un événement ==== | ==== Syntaxe de création d’un événement ==== | ||
< | < | ||
Ligne 70: | Ligne 89: | ||
[COMMENT ' | [COMMENT ' | ||
DO instructions_sql; | DO instructions_sql; | ||
+ | ===== ===== | ||
--Exemple | --Exemple | ||
CREATE EVENT nom_evenement | CREATE EVENT nom_evenement | ||
Ligne 77: | Ligne 96: | ||
| | ||
</ | </ | ||
+ | ===== ===== | ||
// | // | ||
* AT timestamp [+ INTERVAL intervalle] | * AT timestamp [+ INTERVAL intervalle] | ||
Ligne 85: | Ligne 105: | ||
* intervalle est le délai exprimé sous la forme d'une ou plusieurs expressions séparées par ' | * intervalle est le délai exprimé sous la forme d'une ou plusieurs expressions séparées par ' | ||
* ON COMPLETION renseigne sur le fait de supprimer l' | * ON COMPLETION renseigne sur le fait de supprimer l' | ||
+ | ===== ===== | ||
==== Exemple de planification (schedule) ==== | ==== Exemple de planification (schedule) ==== | ||
^N° ^clause ON SCHEDULE ^l' | ^N° ^clause ON SCHEDULE ^l' | ||
Ligne 94: | Ligne 114: | ||
|5 |EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + INTERVAL 1 WEEK | | | |5 |EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + INTERVAL 1 WEEK | | | ||
|6 |EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK| | | |6 |EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK| | | ||
- | + | ===== Activité ===== | |
- | [[D4-A03]] | + | [[d4:A04]] |