Teradata中字符串转Timestamp(3/6)及毫秒格式解析
Teradata字符串转Timestamp(3/6)及带毫秒格式问题解答
1. 将字符串'20240627181610100000'转换为Timestamp(3/6)
该字符串结构为YYYYMMDDHHMISSFFFFFF(日期+时间+6位毫秒),可通过对应格式的CAST语句直接转换:
- 转换为Timestamp(6):
SELECT CAST('20240627181610100000' AS TIMESTAMP(6) FORMAT 'YYYYMMDDHHMISSFFFFFF');
- 转换为Timestamp(3):
指定3位毫秒格式即可,Teradata会自动截断多余位数:
SELECT CAST('20240627181610100000' AS TIMESTAMP(3) FORMAT 'YYYYMMDDHHMISSFFF');
2. 无分隔符毫秒的Timestamp格式规则
你遇到的转换失败,是因为格式符与字符串结构不匹配:
.S(3)格式要求字符串必须包含小数点(如20240627181751.000),但你的毫秒部分与前面的时间是连在一起的,因此不能使用该格式。- 对于无分隔符的3位毫秒字符串
20240627181751000,需用FFF表示3位毫秒,对应格式为'YYYYMMDDHHMISSFFF',执行语句如下:
SELECT CAST('20240627181751000' AS TIMESTAMP(3) FORMAT 'YYYYMMDDHHMISSFFF');
无需使用子字符串函数即可完成转换。
内容的提问来源于stack exchange,提问作者Hassam
相关产品推荐
相关产品推荐

