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

SQL Oracle Discussion :

code SQL SYSDATE()


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 21
    Points
    21
    Par défaut code SQL SYSDATE()
    Bonjour,

    Voici le champ concerné :

    Nom : Sans titre.jpg
Affichages : 317
Taille : 69,6 Ko

    Pour le moment je filtre ce champ sur toutes les dates de 2019 via le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL WHERE TO_CHAR(C_CMD_LG.DATE_LIV, 'YYYY') = 2019
    Je vous sollicite car j'aimerai affiner cette ligne. Je voudrai extraire toutes les dates comprise entre le 1er jour de l'année en cours jusqu'à la date du jour.

    Par exemple aujourd’hui je voudrai les résultats du 01/01/2019 au 18/11/2019.

    PS : je souhaite que la requête s'actualise toute seule et non pas manuellement (fonction SYSDATE() ???)

    Avez-vous une idée ?

    Cordialement,

    Marin SIMONS

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    bonjour,

    Pour extraire l'année d'une date il faut utiliser EXTRACT ou DATEPART selon le SGBD et non pas convertir la date en char, d'ailleurs une zone char devrait être délimitée par des quotes.
    Pour extraire du 1er janvier à la date du jour, il faut utiliser l'opérateur BETWEEN et des fonctions de date qui dépendent du DGBD, quel est le votre ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Je suis sous Oracle. Dans mon souvenir, mon code ne fonctionne pas si j'omet de mettre TO CHAR().

    Connaissez-vous la fonction qui renvoi la date du jour / l'année en cours ? Car mon souhait final est :

    1er janvier de l'année en cours <= date liv <= date du jour

    Cordialement,

    Marin SIMONS

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    J'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE C_CMD_LG.DATE_LIV BETWEEN TO_DATE('2019/01/01', 'YYYY/MM/DD') AND TO_DATE('2019/12/31', 'YYYY/MM/DD')
    J'aimerai juste que la date en gras soit celle du jour !

    Marin SIMONS

  5. #5
    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 803
    Points
    30 803
    Par défaut
    Il suffit de remplacer TO_DATE('2019/12/31', 'YYYY/MM/DD') par TRUNC(SYSDATE'))
    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.

  6. #6
    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
    Vous pouvez écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DATE_LIV BETWEEN trunc(sysdate, 'yyyy') AND trunc(sysdate);

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Attention avec le trunc(sysdate) et avec trunc d'une date en général.

    Aujourd'hui par exemple, trunc(sysdate), c'est 22/11/2019 00:00:00.
    Si on a des données d'aujourd'hui comme 22/11/2019 10:11:12, elles ne vont pas ressortir car elles sont postérieures au trunc(sysdate).

    Si les données en table ont toujours leurs heures, minutes et secondes à 0, il n'y aura pas de souci.
    Sinon il faut bricoler un peu la condition pour s'assurer qu'on prend bien la date du jour jusqu'à 23:59:59, avec quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DATE_LIV >= trunc(sysdate, 'yyyy') AND DATE_LIV < trunc(sysdate + 1);
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

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

Discussions similaires

  1. [Mon premier code SQL] Multiples INNER JOIN's
    Par Paulinho dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/11/2005, 09h04
  2. Création BD Access Code SQL pour relation 1-1 ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 16h42
  3. Réponses: 7
    Dernier message: 12/09/2005, 11h05
  4. [IB6] Code SQL.
    Par qi130 dans le forum SQL
    Réponses: 1
    Dernier message: 21/02/2005, 12h21
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10

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