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 :

La fonction SYSDATE est-elle appropriée?


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Par défaut La fonction SYSDATE est-elle appropriée?
    Bonjour,

    je voudrais toutes les commandes dont la "creation_date" est aujourd'hui.
    Si je remplace, dans l'avant dernière ligne de code "to_date ('24/10/2012', 'DD/MM/YYYY')" par "sysdate" ça ne marche pas.

    Que faire?

    Code sql : 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
          ooh.order_number                  "num commande"
        , ool.ordered_item                  "article commande"
        , msi.SEGMENT1                      "article en prod"
        , ool.ordered_quantity              "quantité"
        , trunc(ooh.creation_date)          "date de réception"
    FROM        oe_order_headers_all        ooh    
    LEFT JOIN   oe_order_lines_all          ool ON ooh.header_id = ool.header_id
    INNER JOIN mtl_serial_numbers    msn ON msn.serial_number = to_char(ooh.order_number)
    INNER JOIN mtl_system_items      msi ON msn.inventory_item_id = msi.inventory_item_id
         WHERE  ooh.order_type_id = 3435
         AND  ooh.org_id = 119
         AND  trunc(ooh.creation_date) = to_date ('24/10/2012', 'DD/MM/YYYY')
         and msn.attribute15 is null

    Merci pour votre aide,
    Douchka

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2010
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 82
    Par défaut
    Si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trunc(ooh.creation_date) = SYSDATE
    Ce ne sera le cas qu'à minuit; car les dates dans Oracle contiennent également l'heure (jusqu'aux secondes).

    Donc, si tu veux comparer avec sysdate, sans prendre en compte les heures, tu dois aussi faire un TRUNC comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trunc(ooh.creation_date) = TRUNC(SYSDATE)

  3. #3
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Par défaut
    Ca marche!

    Merci Amir,
    Douchka

  4. #4
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Par défaut Attention aux index
    Bonjour,

    Un bémol : en utilisant le fonction TRUNC, Oracle ne peut plus utiliser un éventuel index sur la colonne creation_date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(ooh.creation_date) = TRUNC(SYSDATE)
    On pourrait éventuellement créer un index sur TRUNC(creation_date) mais ça limite son champ d'utilisation.

    Une autre méthode serait de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ooh.creation_date >= TRUNC(SYSDATE) and ooh.creation_date < TRUNC(SYSDATE+1)

  5. #5
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Par défaut
    Merci pour l'apport.
    Mais je me limite à des fonctions très basiques, je ne sais même pas à quoi sert un index!

    Merci quand même, aux moins pour les autres internautes!

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

Discussions similaires

  1. la fonction run est elle obligatoire ?
    Par asoka13 dans le forum Applets
    Réponses: 6
    Dernier message: 13/11/2009, 09h33
  2. Réponses: 17
    Dernier message: 05/02/2009, 15h48
  3. La fonction display est-elle fonctionnelle sous ie7
    Par develop' peur ! dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/02/2008, 17h42
  4. Réponses: 3
    Dernier message: 04/03/2007, 09h34
  5. La fonction fgets est-elle compatible Windows/Unix ?
    Par ashurai dans le forum Langage
    Réponses: 1
    Dernier message: 05/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