我正在处理一个庞大而混乱的数据集,该数据集在单列中有两种格式。数据示例如下。我希望将他
'%d-%m-%y
值转换为 %y-%m-%d
。该列被列为 string
,将其转换为日期格式很困难。我需要按年份组织数据,以便我可以获得每个列中个人的第一个和最后一个观察结果。
People | entry_date | exit_date
person1 27-MAY-15 2021-05-18
person1 14-JUL-14 14-AUG-19
person2
person2 11-11-11 2019-08-08
您可以使用
CASE
WHEN
将这些不同的格式更新为一种格式。
请尝试这个,
SELECT
People,
-- Convert entry_date
CASE
WHEN SAFE.PARSE_DATE('%Y-%m-%d', entry_date) IS NOT NULL THEN SAFE.PARSE_DATE('%Y-%m-%d', entry_date)
WHEN SAFE.PARSE_DATE('%d-%b-%y', entry_date) IS NOT NULL THEN SAFE.PARSE_DATE('%d-%b-%y', entry_date)
WHEN SAFE.PARSE_DATE('%d-%m-%y', entry_date) IS NOT NULL THEN SAFE.PARSE_DATE('%d-%m-%y', entry_date)
ELSE NULL
END AS entry_date_parsed,
-- Convert exit_date
CASE
WHEN SAFE.PARSE_DATE('%Y-%m-%d', exit_date) IS NOT NULL THEN SAFE.PARSE_DATE('%Y-%m-%d', exit_date)
WHEN SAFE.PARSE_DATE('%d-%b-%y', exit_date) IS NOT NULL THEN SAFE.PARSE_DATE('%d-%b-%y', exit_date)
WHEN SAFE.PARSE_DATE('%d-%m-%y', exit_date) IS NOT NULL THEN SAFE.PARSE_DATE('%d-%m-%y', exit_date)
ELSE NULL
END AS exit_date_parsed
FROM your_table;