提问人:jay 提问时间:9/19/2023 最后编辑:jay 更新时间:9/20/2023 访问量:78
删除大查询中时间戳列中的尾随时区 (UTC)
Remove the trailing time zone(UTC) in timestamp column in big query
问:
2023 年 9 月 14 日 @ 13:08:53.588 (这是 Bq 列“timestamp”中的字符串格式) 我使用下面的代码将其转换为时间戳
选择 PARSE_TIMESTAMP('%b %d, %Y @ %H:%M:%E*S',时间戳) 这给了我 2023-09-14 13:08:53.587000 UTC。
但是我想删除尾随时区(在本例中为 UTC),因为它是错误的。你能指导我吗?
答:
1赞
joe
9/20/2023
#1
听起来您可能只想使用数据类型和函数。 根据定义,BQ 是 UTC。DATETIME
PARSE_DATETIME
TIMESTAMP
以下是两者的一些示例,并在时区之间进行转换。两者都接受时区参数,但执行不同的事情。
DATETIME('2008-12-25 05:30:00', 'America/Los_Angeles')
转换 UTC 为 LATIMESTAMP('2008-12-25 05:30:00', 'America/Los_Angeles')
转换 LA 为 UTC
WITH test_data AS (
SELECT 'Sep 14, 2023 @ 13:08:53.588' as test_col
)
SELECT
PARSE_TIMESTAMP('%b %d, %Y @ %H:%M:%E*S', test_col) AS utc_timestamp, -- assumes string input is already in UTC
PARSE_DATETIME('%b %d, %Y @ %H:%M:%E*S', test_col) AS test_datetime, -- not timezone aware
TIMESTAMP(
PARSE_DATETIME('%b %d, %Y @ %H:%M:%E*S', test_col),
'Australia/Brisbane'
) AS utc_from_brisbane_timestamp, -- input is in Brisbane time, convert to UTC using the TIMESTAMP function and timezone argument
DATETIME(
PARSE_TIMESTAMP('%b %d, %Y @ %H:%M:%E*S', test_col),
'Australia/Brisbane'
) AS brisbane_from_utc_datetime -- input is in UTC, convert to Brisbane using the DATETIME function and timezone argument
FROM test_data
评论