- Si une date est incomplètement spécifiée, éviter d'utiliser les champs non saisis.
Par exemple, to_date('97','YY') donne une date correspondant au 1er jour du mois en
cours.
select to_date('97','YY') result from dual;
affichera : 01-FEB-97
- Si l'année est saisie avec un code YY, elle est en 2000 ;
avec un code RR, elle est en 1900 ou 2000 suivant sa valeur
(cf. la documentation Oracle).
Ainsi,
select to_char(to_date('97','YY'),'DD-MON-YYYY') result from dual;
affichera : 01-FEB-2097
alors que,
select to_char(to_date('97','RR'),'DD-MON-YYYY') result from dual;
affichera : 01-FEB-1997
- On n'est pas toujours obligé d'utiliser to_char ou to_date : une date 'DD-MON-YYYY'
est valide.
- Oracle fait des conversions automatiques à to_number. Nous pouvons donc écrire :
select ...where to_char(debut,'YYYY')<= 1999
au lieu de
select ...where to_number(to_char(debut,'YYYY'))<= 1999
- Penser à distinguer les données numériques des chaînes de caractères dans les comparaisons
qui ne sont pas des tests d'égalité : 24 < 123 mais '24'>'123'.
Ne pas faire le test to_char(debut,'YY')< 99 car une date en 2001 donnera 01 qui est
inférieur à 99 (bug de l'an 2000). Utiliser l'année sur 4 chiffres.