Partage
  • Partager sur Facebook
  • Partager sur Twitter

Déduire le jour de début et de fin de la semaine 3

Sujet résolu
    29 août 2022 à 11:09:03

    Bonjour

    Dans une base de données ...j'ai , entre autres, un champ "semaine" qui va de 1 à 52 . Nbre de semaines dans une année.

    Avec une requête MYSQL comment déduire que par exemple la "semaine 3 de l'année 2022" va

    - du LUNDI 17 JANV

    au

    - DIMANCHE 23 JANV

    je sèche .

    Une aide SVP ...

    mouchas gracias ;-)

    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2022 à 11:48:42

      Bonjour,

      MySQL dispose d'une fonction WEEK (MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions) qui te retourne le numéro de la semaine pour une date donnée, mais MySQL ne disposant pas d'une table calendrier permettant d'afficher toutes les dates possibles, rien en standard pour faire ce que tu cherches ...

      Je conseille toutefois de créer cette table calendrier, avec une procédure toute simple :

      DELIMITER ;;
      
      DROP PROCEDURE IF EXISTS `calendrier`;;
      CREATE PROCEDURE `calendrier`(IN `date_debut` date, IN `date_fin` date)
      BEGIN
      	CREATE TABLE IF NOT EXISTS calendrier (
      		date_jour DATE PRIMARY KEY
      	) Engine=INNODB;
      
      	SET @date_courante = date_debut;
      
      	WHILE @date_courante <= date_fin DO
      		INSERT IGNORE INTO calendrier VALUES ( @date_courante );
      		SET @date_courante = @date_courante + INTERVAL 1 DAY;
      	END WHILE;
      END;;
      
      DELIMITER ;

      Ensuite, tu as juste à lancer cette procédure avec la période souhaitée :

      CALL calendrier ( '2000-01-01', '2050-12-31' );

      Cela va créer une table calendrier et la remplir avec toutes les dates entre 2000 et 2050.

      Une fois cette table créée, tu peux alors simplement faire ce que tu veux, exemple pour cette semaine (35 de 2022) :

      SELECT
      	MIN( date_jour ) AS debut,
      	MAX( date_jour ) AS fin
      FROM calendrier
      WHERE
      	WEEK( date_jour, 3 ) = 35
      	AND YEAR( date_jour ) = 2022

      A noter le "3" dans la fonction WEEK (cf. la documentation).

      la requête retourne bien :

      debutfin
      2022-08-29 2022-09-04

      Petit bonus, tu peux mettre en place un événement (EVENT) une fois par an qui rajoute les dates de l'année suivante dans ta table calendrier pour éviter d'avoir à le faire manuellement ;)

      -
      Edité par Benzouye 29 août 2022 à 11:52:17

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        29 août 2022 à 15:06:39

        @Benzouye

        merci pour ton aide ... ca à l'air sympa.

        ca marche

        • Partager sur Facebook
        • Partager sur Twitter

        Déduire le jour de début et de fin de la semaine 3

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown