我需要一些有關 BigQuery 日期格式的幫助,具體取決于它們的值。源資料具有 STRING 資料型別,目標資料型別是 DATE。我需要根據輸入日期的值格式化輸入日期,如下所示:

- NULL 值應保持為 NULL
- 空字串(“”)應轉換為 NULL
- YYYY-MM-DD 格式的日期應保持原樣
- MM/DD/YYYY 格式的日期應轉換為 YYYY-MM-DD 格式
這是我到目前為止所做的:
SELECT input_date, CASE WHEN input_date = '' THEN NULL ELSE PARSE_DATE('%m/%d/%Y', input_date) END AS output_date FROM mytable
嘗試決議 YYYY-MM-DD 格式的日期時,上述 case 陳述句失敗。這是我得到的錯誤:

如何解決 YYYY-MM-DD 日期格式?任何反饋表示贊賞。
uj5u.com熱心網友回復:
您可以嘗試考慮以下方法,其中您需要添加另一個WHEN,然后使用正則運算式匹配YYYY-MM-DD字串,然后將其決議為所需的日期格式,如下所示。
with sample_data as (
select NULL as input_date,
union all select '' as input_date,
union all select '2022-05-21' as input_date,
union all select '05/25/2022' as input_date
)
SELECT input_date,
CASE WHEN input_date = '' THEN NULL
WHEN REGEXP_CONTAINS(input_date, r'^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$') THEN PARSE_DATE('%F', input_date)
ELSE PARSE_DATE('%m/%d/%Y', input_date) END AS output_date FROM sample_data
輸出:

uj5u.com熱心網友回復:
考慮以下查詢:
WITH sample_data AS (
SELECT * FROM UNNEST(['', null, '2022-05-21', '05/25/2022']) input_date
)
SELECT *,
COALESCE(SAFE.PARSE_DATE('%m/%d/%Y', input_date), SAFE.PARSE_DATE('%F', input_date)) output_date
FROM sample_data;
輸出結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/514671.html
