我需要将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' )
如何以一位数记帐月份?
答案 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')
。它允许单个数字天,但不是单个数字月。