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

Oracle Discussion :

[SQL] records = à la date courante


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Par défaut [SQL] records = à la date courante
    Helloww,...

    J'ai une requête qui devrait me renvoyer le nombre de lignes groupée par un champ AppCode qui ont leur timestamp égal à la date actuelle. ça ne marche pas et je ne vois pas l'erreur. Un utilisateur expérimenté pourais t'il m'aider ?

    voici la ligne de code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select distinc(appcode), count(*) "COUNT" from tbl_event 
    where to_date(to_char(timestamp,'YYYYMMDDHH24MISS'),'YYYYMMDDHH24MISS') = sysdate 
    group by appcode;
    Il parait que les centièmes de seconde ne sont pas repris dans le type 'DATE' mais bien dans le type 'TIMESTAMP'

    TIMESTAMP = DATE + une partie fraction (centième de sec, etc.)

    et que le code ci dessus aurait du les supprimer,... mais ça ne marche pas. Quelqu'un à une idée ? que dois je modifier pour n'avoir dans mon count que les lignes dont la date vaut la date du jours ?

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select trunc(systimestamp) from dual

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Je ne comprends pas ce que tu veux faire... Tu veux compter les lignes générées à la seconde prêt ?

    NB : sysdate = date, heure, minutes et secondes.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Par défaut
    non , en fait je veux compter toutes les lignes dont le time stamp vaut la journée actuelle.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Par défaut
    Citation Envoyé par SheikYerbouti
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select trunc(systimestamp) from dual
    ?? je comprend pas, dans ce code il n'y à pas de where pour indiquer que la date doit valoir aujourd'hui ? systimestamp est une colonne qui contient la date du record dans la db ?

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Dans ce cas essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select appcode, count(*) "COUNT" from tbl_event 
    where to_char(timestamp,'YYYYMMDD') = to_char (sysdate , 'YYYYMMDD')
    group by appcode;
    Ainsi, tu ne prends pas en compte les heures, minutes et secondes.

    NB : le distinct sur appcode est inutile, puisque tu fais déjà un group by sur cette colonne.

    SheikYerbouti : es-tu sûr que l'on peut faire un trunc sur un timestamp ? En tout cas en 9i, j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select trunc (systimestamp) from dual;
    select trunc (systimestamp) from dual
                  *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected NUMBER got TIMESTAMP

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Par défaut
    ok super ! ça à l'air bien ! je l'essayerai lundi matin car là j'ai un rdv que je peux pas louper. je vous tient au courant

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    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
    17
    18
    19
    SQL*Plus: Release 9.0.1.3.0 - Production on Ve Dec 2 17:43:47 2005
     
    (c) Copyright 2001 Oracle Corporation.  All rights reserved.
     
     
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.5.0 - Production
     
    SQL> select trunc(systimestamp) from dual
      2  
    SQL> /
     
    TRUNC(SYST
    ----------
    02/12/2005
     
    SQL>

  9. #9
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL*Plus: Release 9.0.1.4.0 - Production on Fri Dec 2 17:53:09 2005
     
    (c) Copyright 2001 Oracle Corporation.  All rights reserved.
     
     
    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    JServer Release 9.2.0.1.0 - Production
     
    SQL> select trunc (systimestamp) from dual;
    select trunc (systimestamp) from dual
                  *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected NUMBER got TIMESTAMP
    Ma base est une 9.2.0.1, cela doit venir de là...

Discussions similaires

  1. Date courante dans les requête SQL
    Par ted the Ors dans le forum Access
    Réponses: 2
    Dernier message: 03/08/2009, 15h51
  2. Date courante dans une requette SQL
    Par imene25 dans le forum Débuter
    Réponses: 8
    Dernier message: 24/05/2009, 21h56
  3. [Date] Date courante au format SQL
    Par Mister Nono dans le forum JDBC
    Réponses: 3
    Dernier message: 17/03/2005, 16h57
  4. Réponses: 8
    Dernier message: 05/05/2004, 12h30
  5. Date courante
    Par missllyss dans le forum SQL
    Réponses: 5
    Dernier message: 29/08/2003, 11h09

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