我在source中有一个日期列,定义为varchar(255)。我想将其转换为时间戳(0)。我使用以下查询:
SEL CAST(CAST( SERIND AS CHAR(10)) || ' 00:00:00' AS TIMESTAMP(0))
FROM DP_BOX.SOC1
WHERE SERIND ='20130518'
我在这里收到无效的时间戳。样品SERIND是
20170509
00000000
有人可以帮我吗?
答案 0 :(得分:0)
您可以使用CAST
TIMESTAMP(0)
SEL CAST(SERIND as TIMESTAMP(0) FORMAT 'YYYYMMDDHHMISS')
FROM DP_BOX.SOC1;
答案 1 :(得分:0)
您将需要CAST()
以您的方式使用可接受的日期格式作为Teradata中时间戳的组件。 (我认为可能有一个数学的快捷方式也可以使用数字格式,但我必须面对那个。)
假设SERIND是CHAR(8)开头。第一个CAST()
会使您获得具有兼容格式的DATE
值。第二个CAST()
会为您提供一个包含10个字符格式的DATE
,这样当您将其连接到时间戳的TIME
部分时,DATE
值的结果字符转换就是正确的10个字符格式要明确CAST()
到TIMESTAMP
值:
SELECT CAST(CAST(CAST(SERIND AS DATE FORMAT 'YYYYMMDD')
AS DATE FORMAT 'YYYY-MM-DD') || ' 00:00:00' AS TIMESTAMP(0))
FROM DP_BOX.SOC1
WHERE SERIND > '00000000'; -- Invalid Date value