Teradata中如何将自定义格式时间字符串转为TIMESTAMP(0) WITH TIME ZONE
Teradata时间戳转换:解决自定义时区格式的报错问题
你碰到的「Invalid Timestamp」错误,核心原因是格式字符串里的时区符BZ和输入字符串的时区格式不匹配。BZ对应的是带冒号的5位时区偏移(比如+09:00),而你的输入是不带冒号的4位偏移+0900,需要改用TZ格式符——它专门匹配±HHMI样式的时区偏移。
修正后的SQL语句如下:
CAST('27/Mar/2023:15:36:58 +0900' AS TIMESTAMP(0) WITH TIME ZONE FORMAT 'DD/MMM/Y4:HH:MI:SSTZ')
关于能否为CAST函数传入自定义时区小时格式:
- Teradata的CAST函数FORMAT子句里,时区相关的格式符是预定义的,无法完全自定义格式规则,但可以根据输入的时区样式选择对应格式符:
TZ:适配不带冒号的4位时区偏移(如+0900、-0500)BZ:适配带冒号的5位时区偏移(如+09:00、-05:00)ZH:单独提取时区小时部分(如+09)ZM:单独提取时区分钟部分(如00)
如果你的时区格式更特殊(比如仅包含小时数,如+09),可以组合ZH这类格式符来适配,但不能随意自定义格式规则。
内容的提问来源于stack exchange,提问作者curious_nustian
相关产品推荐
相关产品推荐

