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 05/01/2012, 10h56   #1
Membre à l'essai
 
Inscription : novembre 2009
Messages : 93
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 93
Points : 22
Points : 22
Par défaut Champs data = sysdate

Bonjour à tous,

J'ai un petit souci avec une requête. J'ai un champ date et dans ma requête je fais:

Code :
1
2
 
SELECT * FROM EM_DATA WHERE FSD_DATE <= SYSDATE-22;
Cette requête avec le inférieur ou égal me retourne des résultats et y a des résultat au 14/12/11 jusqu'au 01/09/11

La même requête en enlevant le inférieur me ramène rien
Code :
1
2
 
SELECT * FROM EM_DATA WHERE FSD_DATE = SYSDATE-22;
Alors que normalement je devrais avoir les résultats du 14/12/11.

Quelqu'un a une explication/solution?

Merci d'avance!
Tonii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 11h19   #2
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
Faites le paramétrage suivant, vous allez comprendre pourquoi ce n'est pas égal :
Code :
ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 11h29   #3
Membre à l'essai
 
Inscription : novembre 2009
Messages : 93
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 93
Points : 22
Points : 22
Bonjour et merci pour la réponse mais je n'ai toujours pas compris?

Quel est le lien entre le ALTER SESSION et mon problème?
Code :
1
2
 
ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
Je précise que dans ma table le champ date est au format 'DD/MM/YY HH24:MI:SS'

Si je fais <= (sysdate-22) j'ai des résultats, pourquoi avec = ca ne fonctionne pas?
Tonii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 11h44   #4
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
Après ce paramétrage, si vous refaites vos requêtes (c'était sous entendu !), et que par ailleurs vous faites
Code :
SELECT SYSDATE - 22 FROM DUAL;
vous allez constater à coup sûr que la date en question ne figure pas dans votre table, car il y a une différence au niveau heures/minutes/secondes.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 14h04   #5
Membre à l'essai
 
Inscription : novembre 2009
Messages : 93
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 93
Points : 22
Points : 22
J'ai trouvé la solution je fais un

Code :
1
2
 
TRUNC(FSD_DATE, 'DDD') = TRUNC((SYSDATE-22), 'DDD')


Merci encore pour votre aide!
Tonii 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 04h13.


 
 
 
 
Partenaires

Hébergement Web