Format DATE
kadden
Messages postés
311
Statut
Membre
-
fiu -
fiu -
Bonjour,
Je voulais vous demander comment trouver une date dans une table SQL,
j'utilise la requête suivante :
"SELECT * From table where ma_date = 08/06/1975"
pourtant sur une base de donnée MySql, ça marchait bien, mais le format du champ "ma_date" était TEXTE
Merci pour vôtre aide
Je voulais vous demander comment trouver une date dans une table SQL,
j'utilise la requête suivante :
"SELECT * From table where ma_date = 08/06/1975"
pourtant sur une base de donnée MySql, ça marchait bien, mais le format du champ "ma_date" était TEXTE
Merci pour vôtre aide
7 réponses
-
-
Justement je ne connais pas tout à fait le SGBD,
mais je pense bien que c'est Oracle -
WOAW !
comment ça je ne connais pas tout à fait le SGBD ?
Quel outil utilises-tu pour envoyer tes requêtes à ton SGBD ? -
Par un requetteur par exemple
et donc on ne pourra même pas voir le type de SGBD,
cela dit je pense que c'est du Oracle
Merci pour vôtre aide -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut
mais qu'est-ce qui te laisse penser que c'est de l'oracle, quels indices te poussent à croire ça ?
si c'est de l'oracle, la vue v$version devrait te renvoyer quelque chose -
Je ne sais pas comment taper une commande pour la version du SGBD,
mais j'ai taper une requête qui ne marche qu'avec ORACLE :
Select * from All_tables
Merci de me dire comment faire pour chercher une date dans une table Oracle -
Salut
en passant: c'est pas l'existence de all_tables qui peut t'assurer que le sgbd est Oracle.
Si c'était de l'oracle, ta date dépendrait des paramètres de ta session. Et le plus simple a toujours été d'annoncer à Oralce le format de date désiré (juste après l'ouverture de session).
Une fois ce format annoncé, toutes les conversions de date (date->chaine ou chaine->date) implicites ou explicites se font par défaut avec ce format. Si, pour un cas particulier, on a besoin d'un autre format, on le précise lors de la conversion.
A. Juste après l'ouverture de session, on pourrait envoyer
ALTER SESSION SET NLS_DATE_FORMAT='dd/mm/yyyy';
nb: Ça c'est typiquement Oracle
B. Recherche de tous les dtButee < 1er juillet
SELECT * FROM table where dtButee < '01/07/2010';
c'est interprété par Oracle en
SELECT * FROM table where dtButee < to_date('01/07/2010');
nb: le format par défaut a été utilisé par to_date()
C. la même recherche avec un to_char() explicite utilisant le format par défaut
SELECT * FROM table WHERE to_char(dtButee) < '01/07/2010';
ne fonctionnera pas car le 02/06 ne serait pas inférieur au 01/07
Cbis. la même recherche avec un to_char() explicite citant le format à utiliser
SELECT * FROM table WHERE to_char(dtButee, 'yyyymmdd') < '20100701';
D. Recherche de tous les dtButee < aujourd'hui
SELECT * FROM table where dtButee < sysdate; -- comparaison date avec date
E. Offrir 2 points sur la moyenne aux elèves dont c'est l'anniversaire
UPDATE eleves
SET moyenne_generale = moyenne_generale + 2
WHERE to_char(dtNaissance, 'ddmm') = to_char(sysdate, 'ddmm');
F. Provoquer une erreur avec une requête ne respectant pas le format défini dans la session
SELECT * FROM table WHERE dtButee < '01/07/2010 13:30:00');