如何将字符串"Wed, 29 Mar 2023 12:20:45.474"转为时间戳?PARSE_TIMESTAMP调用失败求助
字符串转时间戳的正确方法
你之前的语句失败,核心问题是格式符%f匹配的是6位微秒,但你的时间字符串里只有3位毫秒,改用%3f就能精准匹配小数部分。
基础转换语句
SELECT PARSE_TIMESTAMP('%a, %d %b %Y %H:%M:%S.%3f', 'Wed, 29 Mar 2023 12:20:45.474') AS converted_timestamp;
指定时区转换
如果你的会话时区不是UTC,建议显式指定时区参数,避免转换偏差:
SELECT PARSE_TIMESTAMP('%a, %d %b %Y %H:%M:%S.%3f', 'Wed, 29 Mar 2023 12:20:45.474', 'UTC') AS converted_timestamp;
转成Unix时间戳
如果需要得到数值型的Unix时间戳,可搭配UNIX_SECONDS(秒级)或UNIX_MILLIS(毫秒级)函数:
-- 秒级时间戳 SELECT UNIX_SECONDS(PARSE_TIMESTAMP('%a, %d %b %Y %H:%M:%S.%3f', 'Wed, 29 Mar 2023 12:20:45.474')) AS unix_seconds; -- 毫秒级时间戳 SELECT UNIX_MILLIS(PARSE_TIMESTAMP('%a, %d %b %Y %H:%M:%S.%3f', 'Wed, 29 Mar 2023 12:20:45.474')) AS unix_millis;
内容的提问来源于stack exchange,提问作者Guillermo Coseani
相关产品推荐
相关产品推荐

