Snowflake - 多种日期格式
Snowflake - Multiple date formats
我有一个雪花 table 列,它有多种日期格式(带有 AM、PM 和日期的时间戳)存储为 varchar。
请告诉我如何使用 snowsql case 语句或任何其他方法将它们转换为 timestamp_tz 格式。
例如列中可用的不同格式及其预期转化率如下
('9/03/2020 12:00:00 AM' ,'mm/dd/yyyy hh12:mi:ss am') 应转换为 2020-03-09 12:00:00
('9/03/2020 05:00:00 PM' ,'mm/dd/yyyy hh12:mi:ss pm') 应转换为 2020-03-09 17:00:00
13/09/2021 应转换为 2021-09-13 00:00:00
谢谢
你只需要使用TRY_TO_TIMESTAMP功能
如果您有一系列格式设置选项,请使用 TRY_TO_TIMESTAMP or TRY_TO_TIMESTAMP_NTZ so that failure results in NULL, and then chain them together with COALESCE
SELECT
column1,
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss am') as format1,
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss pm') as format2,
TRY_TO_TIMESTAMP(column1, 'dd/mm/yyyy') as format3,
COALESCE(format1, format2, format3) as date_a,
COALESCE(TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss am'),
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss pm'),
TRY_TO_TIMESTAMP(column1, 'dd/mm/yyyy')
) as date_b
FROM VALUES
('9/03/2020 12:00:00 AM'),
('9/03/2020 05:00:00 PM'),
('13/09/2021');
给出:
COLUMN1
FORMAT1
FORMAT2
FORMAT3
DATE_A
DATE_B
9/03/2020 12:00:00 AM
2020-09-03 00:00:00.000
2020-09-03 00:00:00.000
2020-09-03 00:00:00.000
2020-09-03 00:00:00.000
9/03/2020 05:00:00 PM
2020-09-03 17:00:00.000
2020-09-03 17:00:00.000
2020-09-03 17:00:00.000
2020-09-03 17:00:00.000
13/09/2021
2021-09-13 00:00:00.000
2021-09-13 00:00:00.000
2021-09-13 00:00:00.000
这表明不需要 format2,因此可以学习并节省计算成本!
我有一个雪花 table 列,它有多种日期格式(带有 AM、PM 和日期的时间戳)存储为 varchar。
请告诉我如何使用 snowsql case 语句或任何其他方法将它们转换为 timestamp_tz 格式。
例如列中可用的不同格式及其预期转化率如下
('9/03/2020 12:00:00 AM' ,'mm/dd/yyyy hh12:mi:ss am') 应转换为 2020-03-09 12:00:00
('9/03/2020 05:00:00 PM' ,'mm/dd/yyyy hh12:mi:ss pm') 应转换为 2020-03-09 17:00:00
13/09/2021 应转换为 2021-09-13 00:00:00
谢谢
你只需要使用TRY_TO_TIMESTAMP功能
如果您有一系列格式设置选项,请使用 TRY_TO_TIMESTAMP or TRY_TO_TIMESTAMP_NTZ so that failure results in NULL, and then chain them together with COALESCE
SELECT
column1,
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss am') as format1,
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss pm') as format2,
TRY_TO_TIMESTAMP(column1, 'dd/mm/yyyy') as format3,
COALESCE(format1, format2, format3) as date_a,
COALESCE(TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss am'),
TRY_TO_TIMESTAMP(column1, 'mm/dd/yyyy hh12:mi:ss pm'),
TRY_TO_TIMESTAMP(column1, 'dd/mm/yyyy')
) as date_b
FROM VALUES
('9/03/2020 12:00:00 AM'),
('9/03/2020 05:00:00 PM'),
('13/09/2021');
给出:
COLUMN1 | FORMAT1 | FORMAT2 | FORMAT3 | DATE_A | DATE_B |
---|---|---|---|---|---|
9/03/2020 12:00:00 AM | 2020-09-03 00:00:00.000 | 2020-09-03 00:00:00.000 | 2020-09-03 00:00:00.000 | 2020-09-03 00:00:00.000 | |
9/03/2020 05:00:00 PM | 2020-09-03 17:00:00.000 | 2020-09-03 17:00:00.000 | 2020-09-03 17:00:00.000 | 2020-09-03 17:00:00.000 | |
13/09/2021 | 2021-09-13 00:00:00.000 | 2021-09-13 00:00:00.000 | 2021-09-13 00:00:00.000 |
这表明不需要 format2,因此可以学习并节省计算成本!