d4:c03

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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] dthevenotd4: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) +  * DATE : date (AAAA-MM-JJ) 
- DATETIME : date + heure (AAAA-MM-JJ HH:MM:SS) +  DATETIME : date + heure (AAAA-MM-JJ HH:MM:SS) 
- TIME : durée ou heure du jour +  TIME : durée ou heure du jour 
- TIMESTAMP : similaire à DATETIME mais dépend du fuseau horaire +  TIMESTAMP : similaire à DATETIME mais dépend du fuseau horaire 
- YEAR : année sur 4 chiffres+  YEAR : année sur 4 chiffres
 <bootnote>Ressource utile : https://mariadb.com/kb/en/date-time-functions/</bootnote> <bootnote>Ressource utile : https://mariadb.com/kb/en/date-time-functions/</bootnote>
 ===== Manipuler les dates ===== ===== Manipuler les dates =====
Ligne 26: Ligne 26:
   * SELECT DATE_ADD(NOW(), INTERVAL 100 DAY); -- +100 jours   * SELECT DATE_ADD(NOW(), INTERVAL 100 DAY); -- +100 jours
   * SELECT DATE_FORMAT(NOW(), '%W %d %M %Y'); -- mise en forme   * SELECT DATE_FORMAT(NOW(), '%W %d %M %Y'); -- mise en forme
 +  * SELECT YEAR(champDate);
 +  * SELECT MONTH(champDate);
 +  * ...
 +
 +Exemples avec des valeurs de dates précises :
 +  * SELECT YEAR('2017-03-20') as Année; -> 2017
 +  * SELECT MONTH('2017-03-20') as Mois; -> 3
 +  * SELECT DAY('2017-03-20') as Jour;   -> 20 
 +  * SELECT WEEKDAY('2017-03-20') as JourSemaine;  -> 0 (=lundi, 6=dimanche)
 +  * SELECT DAYOFWEEK('2017-03-20') as JourSemaine; -> 2 (=lundi,1=dimanche) 
 +  * SELECT HOUR('2017-03-20 00:47:49') as Heures; -> 0 
 +  * SELECT MINUTE('2017-03-20 00:47:49') as Minutes;  -> 47
 +  * SELECT SECOND('2017-03-20 00:47:49') as Secondes; -> 49 
 +  * Mettre en forme une valeur de date : SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y') -> Sunday October 2009 (jour mois année)
 +
 +=====  =====
 ==== 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, effectuez des recherches !) 
-  - 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, effectuez des recherches !)
 +
  
 ===== La programmation d’événements ===== ===== La programmation d’événements =====
- +La programmation d’événements (events) permet de planifier dans le temps l'exécution d'un traitement à 
- La programmation d’événements (events) permet de planifier dans le temps l'exécution d'un traitement à +
 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'ensemble des tables mises à jour dans la journée    * Analyser et optimiser l'ensemble des tables mises à jour dans la journée 
   * …   * …
 +=====  =====
 ==== Prérequis ==== ==== Prérequis ====
 +<bootnote warning>  
   * Le programmateur d’événements (event scheduler) doit être actif   * Le programmateur d’événements (event scheduler) doit être actif
   * L'utilisateur doit avoir le privilège SUPER (au niveau global) pour avoir l'autorisation d'exécuter des commandes d'administration et de débogage.   * L'utilisateur doit avoir le privilège SUPER (au niveau global) pour avoir l'autorisation d'exécuter des commandes d'administration et de débogage.
   * Pour définir un événement dans une base, l'utilisateur doit avoir le privilège EVENT.   * Pour définir un événement dans une base, l'utilisateur doit avoir le privilège EVENT.
 +</bootnote>
  
 __Vérification__ : SHOW VARIABLES LIKE 'event_scheduler'; __Vérification__ : SHOW VARIABLES LIKE 'event_scheduler';
  
 __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 ====
 <code> <code>
Ligne 70: Ligne 89:
     [COMMENT 'commentaire']     [COMMENT 'commentaire']
     DO instructions_sql;     DO instructions_sql;
 +=====  =====
 --Exemple --Exemple
 CREATE EVENT nom_evenement CREATE EVENT nom_evenement
Ligne 77: Ligne 96:
    instruction_sql;    instruction_sql;
 </code> </code>
 +=====  =====
 //**schedule**// précise la planification (instant initial, période, instant final) selon le modèle suivant : //**schedule**// précise la planification (instant initial, période, instant final) selon le modèle suivant :
   * AT timestamp [+ INTERVAL intervalle]  🡪 exécution unique (événement ponctuel)   * AT timestamp [+ INTERVAL intervalle]  🡪 exécution unique (événement ponctuel)
Ligne 85: Ligne 105:
     * intervalle est le délai exprimé sous la forme d'une ou plusieurs expressions séparées par '+' quantite {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}     * intervalle est le délai exprimé sous la forme d'une ou plusieurs expressions séparées par '+' quantite {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
   * ON COMPLETION renseigne sur le fait de supprimer l'événement après son exécution, par défaut NOT PRESERVE, l'événement expiré est détruit.   * ON COMPLETION renseigne sur le fait de supprimer l'événement après son exécution, par défaut NOT PRESERVE, l'événement expiré est détruit.
 +=====  =====
 ==== Exemple de planification (schedule) ==== ==== Exemple de planification (schedule) ====
 ^N° ^clause ON SCHEDULE ^l'événement s'exécute ... (à compléter)^ ^N° ^clause ON SCHEDULE ^l'événement s'exécute ... (à compléter)^
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]]
  
  • d4/c03.1758743371.txt.gz
  • Dernière modification : 2025/09/24 21:49
  • de dthevenot