IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

SQL:Obtenir la date du 3ème dimanche de chaque mois


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut SQL:Obtenir la date du 3ème dimanche de chaque mois
    Bonjour à tous,
    Un long week end arrive très bientôt mais avant cela je galère sur une requête SQL ORACLE.
    J'aimerai savoir si c'est possible d'obtenir la date du 3eme dimanche de chaque mois pour l'année 2009.
    Mes recherches n'ont rien données; Je fais donc appel aux chers developpeurs.netteurs
    Merci de m'avoir lu et de votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 901
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    et dans ce cas il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT PJR_DATE
    FROM
    (
    SELECT PJR_DATE, ROW_NUMBER() OVER (PARTITION BY PMS_ID ORDER BY PJR_DATE) AS N
    FROM   T_PLN_JOUR_PJR
    WHERE  PJS_ID = 7
       AND  PAN_ID = 2009
    ) AS T
    WHERE  N = 3
    A +

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Vu que c'est de l'Oracle vous pouvez ruser un peu.
    Mais il est mille fois préférable d'avoir une table calendrier qui sert très souvent.
    Attention, le dimanche est à écrire en fonction de la langue de votre SGBD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select next_day(next_day(next_day(to_date('2009' || to_char(level, 'FM00'), 'yyyymm')-1, 'Dimanche'), 'Dimanche'), 'Dimanche') t
    from dual connect by level <= 12
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    18/01/2009
    15/02/2009
    15/03/2009
    19/04/2009
    17/05/2009
    21/06/2009
    19/07/2009
    16/08/2009
    20/09/2009
    18/10/2009
    15/11/2009
    20/12/2009

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    La même requête sans avoir besoin d'écrire le jour.
    L'année devient le seul paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select next_day(next_day(next_day(to_date('2009' || to_char(level, 'FM00'), 'yyyymm')-1, dim), dim), dim) as Third_sunday
    from dual cross join (select to_char(trunc(sysdate, 'day')-1, 'day') dim from dual)
    connect by level <= 12
    Pour cette requête-ci il vous faut savoir que dimanche est le 7ème jour de la semaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select next_day(next_day(next_day(to_date('2009' || to_char(level, 'FM00'), 'yyyymm')-1, 7), 7), 7) as Third_sunday
    from dual connect by level <= 12

  6. #6
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut Merci
    Je vous remercie énormément pour vos réponses,

    J'ai adapté vos requêtes pour avoir uniquement le 3ème dimanche du mois prochain avec la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select next_day(next_day(next_day(LAST_DAY(sysdate)+1,'DIMANCHE'),'DIMANCHE'),'DIMANCHE') from dual
    Mais votre aide m'a été très précieuse! Merci Waldar, Merci SQLPro, Merci CinePhil!

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Si vous utilisez LAST_DAY, ne faites pas +1 car si le premier jour du mois est un dimanche votre requête vous donnera le quatrième dimanche et non pas le troisième.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Obtenir la date la plus ancienne
    Par yakup.67 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/04/2018, 07h06
  2. [SQL] Ajouter une durée à une date et obtenir une date valide
    Par bigltnt dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/06/2007, 14h55
  3. [Dates] calendrier : premier jour de chaque mois
    Par vodasan dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2007, 07h26
  4. [SQL][Timestamp] obtenir une date GMT
    Par JeffK dans le forum Oracle
    Réponses: 9
    Dernier message: 20/07/2006, 17h26
  5. [SQL Server] Calcul durée entre 2 dates sans les dimanches
    Par sarahsonia dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/04/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo