Databricks SQL:含T分隔符的字符串转timestamp报错解决
正确转换字符串时间戳的方法
你的问题出在格式字符串与输入的时间戳结构不匹配:输入的日期部分是连续的8位数字(无-分隔),但你用了带分隔符的yyyy-MM-dd格式,导致解析失败。
正确的格式字符串
针对20240724T083000+0100这种格式,需要使用完全匹配的格式规则:
- 日期部分:
yyyyMMdd(对应无分隔符的年、月、日) - 分隔符:
T(直接匹配字符串中的T) - 时间部分:
HHmmss(对应无分隔符的时、分、秒) - 时区偏移:
xxxx(对应四位的时区偏移,如+0100)
示例SQL(以PostgreSQL为例)
SELECT to_timestamp('20240724T083000+0100', 'yyyyMMddTHHmmssxxxx');
补充说明
如果是Oracle数据库,格式符略有差异,需使用支持时区的转换函数,对应格式串如下:
SELECT to_timestamp_tz('20240724T083000+0100', 'YYYYMMDD"T"HH24MISSTZHTZM') FROM dual;
(TZHTZM用于匹配四位的时区偏移,to_timestamp_tz处理带时区的时间戳)
内容的提问来源于stack exchange,提问作者Abhishek Sourabh
相关产品推荐
相关产品推荐

