BigQuery 单列中的多种日期格式

问题描述 投票:0回答:1

我正在处理一个庞大而混乱的数据集,该数据集在单列中有两种格式。数据示例如下。我希望将他

'%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
sql google-bigquery
1个回答
0
投票

您可以使用

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;
© www.soinside.com 2019 - 2024. All rights reserved.