I have a table with a event_date text column with values following one of two date formats:
- 'YYYYMMDD'
- 'YYYY-MM-DD'
For example:
| event_date: text |
|---|
| 1991-04-01 |
| 2009-02-11 |
| 20010101 |
| NULL |
| 20020101 |
How might I parse that column into Date format?
Especially considering that TO_DATE() will take only one possible format
CodePudding user response:
Both formats would be converted to dates with:
SELECT event_date::date event_date
FROM tablename;
Or use a CASE expression to choose one of the two formats:
SELECT TO_DATE(
event_date,
CASE
WHEN event_date LIKE '____-__-__' THEN 'YYYY-MM-DD'
WHEN event_date LIKE '________' THEN 'YYYYMMDD'
END
) event_date
FROM tablename;
See the demo.
