1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
WITH t AS
(SELECT '15/05/2008' col1
FROM DUAL
UNION ALL
SELECT '05/04/2009' col1
FROM DUAL
UNION ALL
SELECT '12/30/2010' col1
FROM DUAL)
SELECT to_date( CASE
WHEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 1) > 12
THEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 1)
ELSE CASE
WHEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 2) > 12
THEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 2)
ELSE REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 1)
END
END
|| '/'
|| CASE
WHEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 2) > 12
THEN REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 1)
ELSE REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 2)
END
|| '/'
|| REGEXP_SUBSTR (TRIM (col1), '[^/]+', 1, 3),'DD-MM-YYYY') dt
FROM t
DT
----------
15-05-2008
05-04-2009
30-12-2010
SQL> |
Partager