Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1475 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] [SQL] Utilisation de champs dans un case CASE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] [SQL] Utilisation de champs dans un case CASE

n°1525200
4get9
C'est clair !
Posté le 07-03-2007 à 14:06:01  profilanswer
 

Bonjour,
 
j'ai un petit souci
 
j'ai un champ DATFIN qui contient une date  :D  
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

Code :
  1. SELECT iif(DATFIN='01/01/0001' ; '31/12/2999' ; DATFIN) AS DATEFIN ...


visiblement sous Oracle iif ne passe pas sous Oracle
j'ai scruté le net pour trouver case :

Code :
  1. (case when DATFIN = '01/01/0001' then '31/12/2999' else DATFIN end) AS DATEFIN ...


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
mood
Publicité
Posté le 07-03-2007 à 14:06:01  profilanswer
 

n°1525215
olivthill
Posté le 07-03-2007 à 14:16:35  profilanswer
 

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'))  
 FROM ...;

n°1525230
4get9
C'est clair !
Posté le 07-03-2007 à 14:31:06  profilanswer
 

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'  :pt1cable:  
 
PS : merci !

n°1525278
4get9
C'est clair !
Posté le 07-03-2007 à 15:03:27  profilanswer
 

ça roule, j'ai par contre dû effectivement forcer le format pour ne pas avoir 2 formats différents.
 
Merci bcp !

n°1525280
casimimir
Posté le 07-03-2007 à 15:04:54  profilanswer
 

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

n°1525286
4get9
C'est clair !
Posté le 07-03-2007 à 15:08:02  profilanswer
 

j'ai tout mis en 'YYYY-MM-DD' vu que j'utilisait le test ">"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] [SQL] Utilisation de champs dans un case CASE

 

Sujets relatifs
[resolu][php/html] recevoir les info d'un formulaire par mailproblème avec l'utilisation d'un StateEdit
[Résolu] Envoi d'un mail en PHP[SQL] Supprimer les tuples en doubles dans une table
VBA access requete SQL et fonction()[résolu] array_unique() pour tableaux multidimensionnels
[résolu] Compter le nombre d'entrées de plusieurs tables[Résolu]Liste déroulante dynamique qui ne s'affiche pas
VBA access fermer word [résolu][résolu] Besoin d'aide pour un conversion Pascal->php
Plus de sujets relatifs à : [RESOLU] [SQL] Utilisation de champs dans un case CASE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR