提问人:data en 提问时间:9/29/2023 最后编辑:data en 更新时间:9/29/2023 访问量:97
如何使用Big Query将任何类型的日期格式和日期时间格式转换为特定的日期格式?
How to convert any type of date format and datetime format into a particular date format using Big Query?
问:
我有一个具有不同日期格式和日期时间格式的日期列。现在,我想将格式转换为 .我用了.虽然它能够转换所有内容,但在日期时间格式(如 .如何在大查询中查询,以便更新语句可以转换任何类型的日期格式和日期时间格式?dd-mm-yyyy
TIMESTAMP_DIFF,PARSE_TIMESTAMP,FORMAT_TIMESTAMP and FORMAT_DATE
dd/mm/yy HH:MM
data:-
0 21/12/2006
1 25/01/2007
2 20/02/2023
3 1996.12.25
4 24/12/2020
5 24/12/2020
6 24/05/2020 12:02
7 24/05/2020 12:02
8 24/05/2020 12:02
9 24/05/2020 12:02
10 20/02/2023
11 21/02/2023
12 22/02/2023
13 23/02/2023
14 24/02/2023
15 25/02/2023
16 26/02/2023
17 02/12/2020
18 02/23/2020
19 09/23/2020
Name: Date, dtype: object
Big query:-
UPDATE table_name
SET
Date = CASE
WHEN TIMESTAMP_DIFF(PARSE_TIMESTAMP('%d/%m/%Y', Date), TIMESTAMP_TRUNC(PARSE_TIMESTAMP('%d/%m/%Y', Date), DAY), SECOND) > 0 THEN
FORMAT_TIMESTAMP('%d%m%y', PARSE_TIMESTAMP('%d/%m/%Y', Date))
ELSE
FORMAT_DATE('%d%m%y', PARSE_DATE('%d/%m/%Y', Date))
END
WHERE TRUE;
Error:
Failed to parse input string "24/05/2020 12:02"
答:
1赞
kiran mathew
9/29/2023
#1
您遇到的错误是因为PARSE_TIMESTAMP无法识别输入的格式。要解决此错误,您可以考虑在案例查询中使用“regex”或“SAFE”关键字。“SAFE”关键字在看到错误数据或数据不是预期的转换格式时返回 NULL。
例:
select
CASE
WHEN SAFE.PARSE_TIMESTAMP('%d/%m/%Y', Dates) IS NOT NULL THEN
FORMAT_TIMESTAMP('%d/%m/%Y', SAFE.PARSE_TIMESTAMP('%d/%m/%Y', Dates))
WHEN SAFE.PARSE_TIMESTAMP('%Y.%m.%d', Dates) IS NOT NULL THEN
FORMAT_TIMESTAMP('%d/%m/%Y', SAFE.PARSE_TIMESTAMP('%Y.%m.%d', Dates))
WHEN SAFE.PARSE_TIMESTAMP('%d/%m/%Y %H:%M', Dates) IS NOT NULL THEN
FORMAT_TIMESTAMP('%d/%m/%Y', SAFE.PARSE_TIMESTAMP('%d/%m/%Y %H:%M', Dates))
ELSE ---Add more when statement to match more date value
NULL
END from t1;
结果:
评论