[FAQ] [Script SQL] Conversion des dates stockées en varchar dans plusieurs formats en champ date
	
	
		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
	Code:
	
| 12
 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 :
	Code:
	
ALTER SESSION set NLS_DATE_LANGUAGE= 'AMERICAN';