在 postgresql 的原始文本列中投射具有多种日期格式的列 to_date
cast column to_date with multiple date formats in original text column in postgresql
我有一个 table 和一个 event_date text
列,其值遵循两种日期格式之一:
- 'YYYYMMDD'
- 'YYYY-MM-DD'
例如:
event_date: text
1991-04-01
2009-02-11
20010101
NULL
20020101
如何将该列解析为 Date
格式?
特别是考虑到 TO_DATE() 将只采用一种可能的格式
两种格式都将转换为日期:
SELECT event_date::date event_date
FROM tablename;
或使用 CASE
表达式来选择两种格式之一:
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;
参见demo。
我有一个 table 和一个 event_date text
列,其值遵循两种日期格式之一:
- 'YYYYMMDD'
- 'YYYY-MM-DD'
例如:
event_date: text |
---|
1991-04-01 |
2009-02-11 |
20010101 |
NULL |
20020101 |
如何将该列解析为 Date
格式?
特别是考虑到 TO_DATE() 将只采用一种可能的格式
两种格式都将转换为日期:
SELECT event_date::date event_date
FROM tablename;
或使用 CASE
表达式来选择两种格式之一:
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;
参见demo。