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

Requêtes PostgreSQL Discussion :

Récupération de la date de début de semaine et de fin de semaine dans un where


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Récupération de la date de début de semaine et de fin de semaine dans un where
    Bonjour,
    j'aimerais crée une requête sql dans le but de crée un indicateur sur un logiciel. le problème étant, je n'arrive pas à récupérer la date de lundi et la date de dimanche pour les mettre dans le where de ma requête. Quelqu'un pourrait il m'aider?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT
        distinct employe.nom as Nom,
        employe.prenom as Prénom,
        sup_Employe_signature.alpha as Batiment,
        operationOrdreFabrication.numeroBonTravail as BT
     FROM
        DeclarationProductionEntite as declarationProduction
        left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication
        left outer join operationOrdreFabrication.ordreFabrication as ordreFabrication
        left outer join declarationProduction.operateur as employe
     WHERE
        AND sup_CentreCharge_batiment.alpha in ('0')
        AND cast (declarationProduction.dateDeclaration as date) BETWEEN 'date lundi' AND 'date dimanche'
    ORDER BY
        1 asc,
        2 asc

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select date_trunc('week', current_date)                     as "Lundi"
         , date_trunc('week', current_date) + interval '6 days' as "Dimanche";

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Le problème n'est pas l'affichage, j'aimerais pouvoir triée tout les enregistrement étant entre la date de lundi et la date de dimanche dans mon where par rapport à la date de déclaration de production. Mais es ce que c'est possible?

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Et oui, il suffit de remplacer les expressions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date)::date AND (date_trunc('week', current_date) + interval '6 days')::date

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    En essayant de rajouter le code que vous avez fourni, une erreur apparait. Je ne comprend pas d'ou viens l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
        distinct employe.nom as Nom,
        employe.prenom as Prenom,
        sup_Employe_batiment.alpha as Batiment,
        operationOrdreFabrication.numeroBonTravail as BT
    FROM
        DeclarationProductionEntite as declarationProduction
        left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication
        left outer join declarationProduction.operateur as employe
        left outer join employe.attributSupplementaire as sup_Employe_batiment with index (sup_Employe_batiment) = 'sup_Employe_batiment'
    WHERE
        AND sup_CentreCharge_batiment.alpha in ('0')
        And cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date) :: date AND (date_trunc('week', current_date) + interval '6 days') :: date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - L'exécution de la requête a échoué.
    Détail de l'exception : unexpected token: AND near line 12, column 5 [SELECT distinct employe.nom as Nom, employe.prenom as Prenom, sup_Employe_batiment.alpha as Batiment, operationOrdreFabrication.numeroBonTravail as BT FROM com.sylob.cochise.dm5.ejb.entite.declarationProduction.DeclarationProductionEntite as declarationProduction left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication left outer join declarationProduction.operateur as employe left outer join employe.attributSupplementaire as sup_Employe_batiment with index (sup_Employe_batiment) = 'sup_Employe_batiment' WHERE AND sup_CentreCharge_batiment.alpha in ('0') And cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date) :: date AND (date_trunc('week', current_date) + interval '6 days') :: date]
    Veuillez rectifier la saisie pour poursuivre.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Le AND de la ligne 12 qui suit le WHERE de la ligne 11 n'est sans doute pas justifié
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bah je ne pense pas,
    je fais toute mes requête comme ça habituellement que faut il que je modifie pour que ça fonctionne ?

    Nom : image_2021-11-04_161756.png
Affichages : 330
Taille : 33,9 Ko

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Comme te l'a dit @al1_24, il ya un and de trop, celui qui est juste après le where. Tu devrais donc avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT
        distinct employe.nom as Nom,
        employe.prenom as Prenom,
        sup_Employe_batiment.alpha as Batiment,
        operationOrdreFabrication.numeroBonTravail as BT
    FROM
        DeclarationProductionEntite as declarationProduction
        left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication
        left outer join declarationProduction.operateur as employe
        left outer join employe.attributSupplementaire as sup_Employe_batiment with index (sup_Employe_batiment) = 'sup_Employe_batiment'
    WHERE
        sup_CentreCharge_batiment.alpha in ('0')
        And cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date) :: date AND (date_trunc('week', current_date) + interval '6 days') :: date
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci Philipouz,
    je n'avais pas compris "le and n'est pas forcément justifié" dans ce sens la.
    J'ai une nouvelle erreur je pense que c'est à cause des ":" dans la syntax de l'expression utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT
        distinct employe.nom as Nom,
        employe.prenom as Prenom,
        sup_Employe_batiment.alpha as Batiment,
        operationOrdreFabrication.numeroBonTravail as BT
    FROM
        DeclarationProductionEntite as declarationProduction
        left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication
        left outer join declarationProduction.operateur as employe
        left outer join employe.attributSupplementaire as sup_Employe_batiment with index (sup_Employe_batiment) = 'sup_Employe_batiment'
    WHERE
        sup_CentreCharge_batiment.alpha in ('0')
        AND cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date)::date AND (date_trunc('week', current_date) + interval '6 days')::date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - L'exécution de la requête a échoué.
    Détail de l'exception : unexpected token: : near line 13, column 97 [SELECT distinct employe.nom as Nom, employe.prenom as Prenom, sup_Employe_batiment.alpha as Batiment, operationOrdreFabrication.numeroBonTravail as BT FROM com.sylob.cochise.dm5.ejb.entite.declarationProduction.DeclarationProductionEntite as declarationProduction left outer join declarationProduction.operationOrdreFabrication as operationOrdreFabrication left outer join declarationProduction.operateur as employe left outer join employe.attributSupplementaire as sup_Employe_batiment with index (sup_Employe_batiment) = 'sup_Employe_batiment' WHERE sup_CentreCharge_batiment.alpha in ('0') AND cast (declarationProduction.dateDeclaration as date) >= date_trunc('week', current_date)::date AND (date_trunc('week', current_date) + interval '6 days')::date]
    Veuillez rectifier la saisie pour poursuivre.

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il manque aussi tous les critères de jointures, vous êtes sûr d'être sur postgresql ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Je ne suis pas sur que ce soit une base de donnée postgres, ce qui me fais dire ça c'est que certaine erreur indique erreur psql. Etant donnée que c'est un erp et que c'est l'éditeur qui à la mains sur le sgbd je ne peux pas vérifier.

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Que donne la requête select version() ?

  13. #13
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je ne peux exécuter des requête sql uniquement sur l'interface web.
    J'ai cette erreur quand je lance "select version()"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - L'exécution de la requête a échoué.
    Détail de l'exception : java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode \-[METHOD_CALL] MethodNode: '(' +-[METHOD_NAME] IdentNode: 'version' {originalText=version} \-[EXPR_LIST] SqlNode: 'exprList'
    Veuillez rectifier la saisie pour poursuivre.

  14. #14
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Je me permet de revenir vers vous pour savoir de quelle SGBD il s'agit? Car aprioris je me serait trompé ou je n'ai pas compris.
    Si ça peux vous aider j'utilise déjà ceci pour faire des tries:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        --DATE de la veille
        AND declarationProduction.dateDeclaration =  DATE(NOW()) -1
        --DATE du jours en cours
        AND cast (declarationProduction.dateDeclaration as date) = DATE(NOW())
        --DATE du mois courant
        AND month(objet.dateFacture) = month(current_date()) 
        --DATE de année courante
        AND year(objet.dateFacture) = year(current_date())

  15. #15
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Novembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2021
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé la solution merci d'avoir essayé de m'aider.
    Voici ma solution (attention elle est pas performante):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     --Faire une recherche pour la semaine courante
        AND
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) 
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -1
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -2
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -3
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -4
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -5
        OR
        firstdayofweek (declarationProduction.dateDeclaration) = DATE(NOW()) -6

  16. #16
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est du HQL (le langage pseudo-SQL d'Hibernate), mais aucune idée de la base de données derrière, ça doit bien figurer dans un des menus de votre éditeur.

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

Discussions similaires

  1. Récupération Date début de semaine dans Talend
    Par Clement M dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 31/10/2014, 09h27
  2. Réponses: 3
    Dernier message: 21/04/2008, 16h19
  3. Réponses: 1
    Dernier message: 03/07/2007, 06h43
  4. Calcul de dates : début de semaine, de mois, de trimestre
    Par pyxosledisciple dans le forum Access
    Réponses: 13
    Dernier message: 22/02/2006, 08h07
  5. Comment obtenir la date de début d'une semaine ?
    Par Vodkha dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2005, 09h54

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