Bonjour à toutes et à tous,
Je voulais partager ce bout de code SQL avec vous…
Le besoin : Au départ j'avais une colonne de type varchar2 contenant des dates de différents formats (dd/MM/yyyy, yyyy/MM/dd, dd-MON-yy, …). Et qui est alimentée par différentes sources (hétérogènes). Mais pour exploiter cette information correctement il suffit de convertir en type date quelque soit le format.
Le but : Lire d’un varchar et convertir en date.
La solution : utilisation des expressions régulières. Voici une requête exemple
1 2 3 4 5 6 7
| select to_date(macolonne,
case
when regexp_like(macolonne, '^[0-9]{2}/[0-9]{2}/[0-9]{2}$') then 'dd/mm/yy'
when regexp_like(macolonne, '^[0-9]{2}-[A-Z]{3}-[0-9][0-9]$') then 'dd-mon-yy'
else 'dd-mm-yy'
end)
from matable |
Par ailleurs, si on a des dates de format MON (mois abrégé), il faut positionner la langue en anglais, pour qu’on puisse parser correctement les dates :
ALTER SESSION set NLS_DATE_LANGUAGE= 'AMERICAN';
Partager