Calcul sur des dates au format hybride
Bonjour,
Je vais la faire simple . J'ai une BDD avec un champ "date " qui est surtout numérique. En somme la BDD oracle a été monté avec une chaine à ce format de type varchar : AAAAMMJJ.
Voici la conversion que je fais :
Code:
1 2 3 4 5 6 7 8 9 10
| select to_date(substr(chaine_AAAAMMJJ,7,2)||'/'||substr(chaine_AAAAMMJJ,5,2)||'/'||substr(chaine_AAAAMMJJ,1,4)) as date_europ
from matable
where chaine_AAAAMMJJ not like '%9999%'
and chaine_AAAAMMJJ is not null
and chaine_AAAAMMJJ != 0
and substr(chaine_AAAAMMJJ,7,2) not like '00'
and substr(chaine_AAAAMMJJ,5,2) not like '00'
and substr(chaine_AAAAMMJJ,7,2) between 01 and 31
and substr(chaine_AAAAMMJJ,5,2) between 01 and 12
and substr(chaine_AAAAMMJJ,1,4) > 1900 ; |
Problème lors de l'affichage de la date je me retrouve avec 11/03/19 au lieu de 11/03/2019 . Pourtant je force bien sur substr(chaine_AAAAMMJJ,1,4) .
A noter je dois pouvoir faire un calcul de la sorte :
Code:
1 2 3 4 5 6 7 8 9 10
| select ('11/03/2018'-(to_date(substr(chaine_AAAAMMJJ,7,2)||'/'||substr(chaine_AAAAMMJJ,5,2)||'/'||substr(chaine_AAAAMMJJ,1,4)))) as difference
from matable
where chaine_AAAAMMJJ not like '%9999%'
and chaine_AAAAMMJJ is not null
and chaine_AAAAMMJJ != 0
and substr(chaine_AAAAMMJJ,7,2) not like '00'
and substr(chaine_AAAAMMJJ,5,2) not like '00'
and substr(chaine_AAAAMMJJ,7,2) between 01 and 31
and substr(chaine_AAAAMMJJ,5,2) between 01 and 12
and substr(chaine_AAAAMMJJ,1,4) > 1900 ; |
Merci de m'aiguiller