如何将VARCHAR转换为TIMESTAMP?

时间:2016-02-05 22:23:39

标签: timestamp teradata varchar

我需要将VARCHAR转换为TIMESTAMP

仅当月份有两位数

时才有效
SEL CAST('12/25/1994 11:46:29 PM'  AS TIMESTAMP(0) FORMAT 'mm-DD-YYYYBhh:mi:ssBt' )

但是,当月份有一位数时,这将失败

SEL CAST('1/2/1994 11:46:29 PM'  AS TIMESTAMP(0) FORMAT 'mm-DD-YYYYBhh:mi:ssBt' )     

如何以一位数记帐月份?

1 个答案:

答案 0 :(得分:1)

首先,您的日期为[{1}}作为分隔符,但您使用/格式的-。然而,这不是你的主要问题。

显然,Teradata CAST格式仅适用于两位数的月份和日期,如果您确定数据格式正确并且这是您遇到的唯一问题,则可以尝试这样的事情。

CAST

其他替代方案是函数SELECT '1/2/1994 11:46:29 PM' AS YourDate, CAST(CASE WHEN YourDate LIKE '_/_/%' THEN '0' || SUBSTRING(YourDate FROM 1 FOR 2) || '0' || SUBSTRING(YourDate FROM 3) WHEN YourDate LIKE '_/__/%' THEN '0' || YourDate ELSE YourDate END AS TIMESTAMP(0) FORMAT 'mm/dd/YYYYBhh:mi:ssBt') 。它允许单个数字天,但不是单个数字月。