如果您有级联格式选项,请使用 TRY_TO_TIMESTAMP 或 TRY_TO_TIMESTAMP_NTZ 以便失败导致 NULL,然后将它们与 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,因此可以学习并节省计算!