Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/11/2011, 19h00   #1
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 87
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 87
Points : 37
Points : 37
Par défaut Soucis avec les comparaisons de dates

Salut à tous,

Je suis ultra-débutant en requête ORACLE et ma question risque de vous paraitre ultra basique

J'essaye de faire un simple SELECT sur ma base avec un WHERE sur les dates.
Voici l'extrait de ma requête qui plante :
Code :
1
2
3
4
5
6
SELECT *
FROM MesTables
WHERE MesJointure...
AND trunc(adate,'dd/mm/yyyy') BETWEEN to_date('2011-01-01', 'yyyy-mm-dd') AND to_date('2011-12-31', 'yyyy-mm-dd')
GROUP BY ...
ORDER BY ...
J'ai l'erreur suivante (après avoir résolu plusieurs erreurs grace au forum) :
Citation:
Warning: oci_execute(): ORA-01898: indicateurs de précision trop nombreux in ora_sql.php on line 28
Pouvez-vous m'aider SVP

Note : Je ne suis pas le gestionnaire de ce serveur ou de cette base. J'y accède juste pour extraire des informations pour un site Internet type extranet.
De la même manière, je n'ai pas le schémas de la base de données avec moi mais en cas de besoin je peux exécuter des requêtes sur la base ou le serveur.

Merci d'avance
Te-Deum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 20h06   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 928
Points : 1 928
Le TRUNC est faux, tu veux peut être faire :
Code :
trunc(adate) BETWEEN to_date('2011-01-01', 'yyyy-mm-dd') AND to_date('2011-12-31', 'yyyy-mm-dd')
Regarde ce que fait TRUNC :
Code :
1
2
3
4
5
6
7
8
9
10
11
SQL> ALTER session SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
 
Session altered.
 
SQL> SELECT sysdate, trunc(sysdate) FROM dual;
 
SYSDATE             TRUNC(SYSDATE)
------------------- -------------------
26/11/2011 20:05:20 26/11/2011 00:00:00
 
SQL>
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 10h38   #3
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 87
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 87
Points : 37
Points : 37
Salut,

Merci pour ta réponse
Je ne sais pas pourquoi mais depuis ce matin je n'ai plus d'erreur qui remonte depuis le serveur même avec l'ancien code !!

Merci encore !
Te-Deum est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/11/2011, 18h23   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je dirai même que le trunc est très probablement inutile et même probablement coûteux car il tue l'utilisation éventuelle d'index / partitions.
Avec une simple réécriture, on s'en passe très bien.

Soit :
Code :
1
2
adate BETWEEN to_date('2011-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
          AND to_date('2011-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
Soit :
Code :
1
2
3
4
5
    adate >= to_date('2011-01-01', 'yyyy-mm-dd')
AND adate <  to_date('2012-01-01', 'yyyy-mm-dd')
-- Équivalent à :
    adate >= date '2011-01-01'
AND adate <  date '2012-01-01'
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/11/2011, 12h25   #5
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 87
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 87
Points : 37
Points : 37
Salut,

J'essayerai sans le trunc alors... Si ça peut améliorer ma requête !

Merci Waldar
Te-Deum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h40.


 
 
 
 
Partenaires

Hébergement Web