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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    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
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  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
    22 002
    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 : 22 002
    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 +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    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 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    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 confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    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!

+ 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