求助:在BigQuery中将'1/17/2022, 11:59 PM'转换为时间戳
BigQuery字符串转指定时间戳解决方案
你的问题在于用了PARSE_DATE函数——这个函数只能解析纯日期字符串,无法处理包含时间、AM/PM标识的完整时间字符串。要实现需求,需要用PARSE_TIMESTAMP解析原字符串,再用FORMAT_TIMESTAMP输出目标格式。
步骤1:解析原字符串为时间戳
使用PARSE_TIMESTAMP,指定匹配原字符串的格式符:
SELECT PARSE_TIMESTAMP('%m/%d/%Y, %I:%M %p', '1/17/2022, 11:59 PM') AS raw_timestamp;
格式符说明:
%m:两位月份(原字符串中1会被补为01)%d:两位日期%Y:四位年份%I:12小时制的小时数(对应原字符串的11)%M:分钟数%p:AM/PM标识
步骤2:格式化为目标字符串
如果需要输出2022/01/17 23:59:00 UTC这种指定格式的字符串,用FORMAT_TIMESTAMP转换:
SELECT FORMAT_TIMESTAMP('%Y/%m/%d %H:%M:%S UTC', PARSE_TIMESTAMP('%m/%d/%Y, %I:%M %p', '1/17/2022, 11:59 PM')) AS target_timestamp;
这里%H是24小时制的小时数(11 PM会转为23),确保输出符合目标格式。
注意事项
- 如果你的会话时区不是UTC,解析时可以指定时区参数(比如
PARSE_TIMESTAMP('%m/%d/%Y, %I:%M %p', '1/17/2022, 11:59 PM', 'America/New_York')),避免时区转换误差。 - 若只需要TIMESTAMP类型而非格式化字符串,直接使用
PARSE_TIMESTAMP的结果即可,BigQuery内部会以UTC存储时间戳。
内容的提问来源于stack exchange,提问作者TO2022
相关产品推荐
相关产品推荐

