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 :

Requête SQL sur champ DATE


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Requête SQL sur champ DATE
    Bonjour à tous ,
    j'ai une requête assez simple mais je n'arrive pas à comprendre le problème :
    j'ai la table suivante :
    Nom : Capture.JPG
Affichages : 5827
Taille : 31,8 Ko

    le problème c'est quand je fais la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select wonnum 
    from WORKORDER
    where SCHEDSTART = to_date('08/11/13', 'DD-MM-YY')
    ça me donne un résultat vide alors que je devrais avoir wonum : 1019.

    une idée ?

    Merci d'avance

  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
    Vous avez probablement des heures / minutes / secondes qui ne sont pas affichées.
    Essayez comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT wonnum 
      FROM WORKORDER
     WHERE SCHEDSTART >= date '2013-11-08'
       AND SCHEDSTART <  date '2013-11-09';

  3. #3
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    déja, il faudrait mettre un masque de date cohérent !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT wonnum 
    FROM WORKORDER
    WHERE SCHEDSTART = to_date('08/11/13', 'DD/MM/YY') -- au lieu de DD-MM-YY
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    et faire un "trunc" pour ne tenir compte que de la date et pas de l'heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT wonnum 
    FROM WORKORDER
    WHERE TRUNC(SCHEDSTART) = to_date('08/11/13', 'DD/MM/YY')
    
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  5. #5
    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
    Citation Envoyé par Garuda Voir le message
    déja, il faudrait mettre un masque de date cohérent !
    Oracle permet une certaine latitude sur les séparateurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select to_date('08/11/13', 'DD-MM-YY') as dt from dual;
     
    DT
    ----------
    2013-11-08

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Oracle permet une certaine latitude sur les séparateurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select to_date('08/11/13', 'DD-MM-YY') as dt from dual;
     
    DT
    ----------
    2013-11-08
    Certes !
    mais autant rester lisible et cohérent !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Pour être cohérant, il vaudrait mieux employer le siècle, sinon ton code bogguera bientôt...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> alter system  set fixed_date='2100-01-01_00:00:00';
    System altered.
    SQL> SELECT to_date('08/11/13', 'DD-MM-YY') AS dt FROM dual;
    DT
    -------------------
    2113-11-08_00:00:00

  8. #8
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Bientôt.. en 2100 !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  9. #9
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez probablement des heures / minutes / secondes qui ne sont pas affichées.
    Essayez comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT wonnum 
      FROM WORKORDER
     WHERE SCHEDSTART >= date '2013-11-08'
       AND SCHEDSTART <  date '2013-11-09';
    la méthode de WALDAR utilise l'index s'il existe sur la colonne SCHEDSTART alors que la méthode de Garuda ne le fait pas.

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Au cas où ça ne résoudrait pas ton problème, outre la partie heure de ta date, il se pourrait que les données manquent de siècle ou le mois et jour inversé ou avant JC.

    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT to_char(SCHEDSTART, 'SYYYY-MM-DD HH24:MI:SS') 
    FROM WORKORDER
    WHERE SCHEDSTART is not null

  11. #11
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Garuda Voir le message
    Bientôt.. en 2100 !
    c'est vrai que si on avait utilisé RR (le fix pour le bug de l'an 2000), on aurait boggué avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    alter session set nls_date_format='YYYY-MM-DD';
    ALTER system  SET fixed_date='2050-01-01_00:00:00' scope=memory;
    SELECT to_date('08/11/13', 'DD-MM-RR') AS dt FROM dual;
       DT        
       ----------
       2113-11-08
    ALTER system  SET fixed_date=none scope=memory;

Discussions similaires

  1. Quelle requête SQL - 2 champs dates
    Par tavarlindar dans le forum Requêtes
    Réponses: 5
    Dernier message: 03/07/2012, 20h29
  2. Requête SQL sur champ XML
    Par elflamby dans le forum Développement
    Réponses: 8
    Dernier message: 15/03/2011, 15h48
  3. Une requête SQL sur 2 Dates
    Par souminet dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/05/2008, 20h29
  4. [CR ?] requête SQL sur une date
    Par czezko dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/04/2008, 10h25
  5. clause sql sur champ Date avec masque de saisie
    Par TOMSEC dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/04/2007, 12h20

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