Utilisation de champs dans un case CASE [RESOLU] [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 07-03-2007 à 14:16:35
Sous Oracle, on utilise habituellement DECODE(champ, valeur_testée, resultat_si_vrai, resultat_si_faux)
Sous Oracle, on onvertit habituellement les dates que l'on utilise pour ne pas se faire avoir avec des format anglais ou avec les heures et les minutes à la fin des dates (ce qui semble être le problème ici).
Faire:
SELECT DECODE(to_char(DATFIN, 'dd/mm/aaaa'), '01/01/0001', '31/12/2999', to_char(DATFIN, 'dd/mm/aaaa')) |
Marsh Posté le 07-03-2007 à 14:31:06
ok je regarde
pour les dates pas de souci, j'ai tapé mon message sans tenir compte de ça
sous PLSQL 'DD/MM/YYYY'
et sous SQLPLUS 'YYYY-MM-DD'
PS : merci !
Marsh Posté le 07-03-2007 à 15:03:27
ça roule, j'ai par contre dû effectivement forcer le format pour ne pas avoir 2 formats différents.
Merci bcp !
Marsh Posté le 07-03-2007 à 15:04:54
il vaut mieux comparer et injecter un
to_date ('2006-01-01','YYYY-MM-DD')
que directement passer un literal et le laisser convertir, car cela dépend de l'internationalisation
Marsh Posté le 07-03-2007 à 15:08:02
j'ai tout mis en 'YYYY-MM-DD' vu que j'utilisait le test ">"
Marsh Posté le 07-03-2007 à 14:06:01
Bonjour,
j'ai un petit souci
j'ai un champ DATFIN qui contient une date
Je voudrais pouvoir utiliser ce champs pour faire des tests, sauf que quand il n'est pas renseigné sur l'application, il contient '01/01/0001'
je voudrais donc remplacer sa valeur par '31/12/2999' dans le cas où il serait à '01/01/0001' (et uniquement dans ce cas)
habitué à Access j'ai voulu faire un
visiblement sous Oracle iif ne passe pas sous Oracle
j'ai scruté le net pour trouver case :
Seulement il semble "tiquer" sur le DATFIN, comme si l'on pouvait seulement lui donner une valeur finie (du texte ou du numérique) mais pas un champs
des idées ?
d'avance merci !
Message édité par 4get9 le 07-03-2007 à 15:04:08