Teradata 时间戳中的格式字符串无效

Teradata 时间戳中的格式字符串无效,teradata,Teradata,我试图将一个值转换为时间戳(0)并插入到表中。列Port_Out_END_Dttm是时间戳(0)。它给了我无效的格式字符串 ,MAX(coalesce(SRC.Port_Out_END_Dttm,cast('31/12/9999 00:00:00' as timestamp FORMAT 'dd/mm/yyyyBhh:mi:ss(0)') ))as Port_Out_END_Dttm 整个查询如下所示: sel ,case when Port_Out_Ver_Phase_END_Dttm

我试图将一个值转换为时间戳(0)并插入到表中。列Port_Out_END_Dttm是时间戳(0)。它给了我无效的格式字符串

,MAX(coalesce(SRC.Port_Out_END_Dttm,cast('31/12/9999 00:00:00' as timestamp FORMAT 'dd/mm/yyyyBhh:mi:ss(0)') ))as Port_Out_END_Dttm 
整个查询如下所示:

sel
,case when  Port_Out_Ver_Phase_END_Dttm in cast ('12/31/9999' as date format 'MM/DD/YYYY') then null else Port_Out_Ver_Phase_END_Dttm end as Port_Out_Ver_Phase_END_Dttm

from
(
sel
,MAX(coalesce(SRC.Port_Out_END_Dttm,cast('31/12/9999 00:00:00' as timestamp FORMAT 'dd/mm/yyyyBhh:mi:ss(0)') ))as Port_Out_END_Dttm 
from table
)
首先,我需要将空值合并到一个高端日期,然后再次将该日期作为空值 这里怎么了


谢谢你的帮助。

我觉得你的语法有点不对劲。请尝试以下版本:

MAX(COALESCE(SRC.Port_Out_END_Dttm,
    CAST('31/12/9999 00:00:00' AS timestamp(0) FORMAT 'DD/MM/YYYYbhh:mi:ss')))

我觉得你的语法有点不对劲。请尝试以下版本:

MAX(COALESCE(SRC.Port_Out_END_Dttm,
    CAST('31/12/9999 00:00:00' AS timestamp(0) FORMAT 'DD/MM/YYYYbhh:mi:ss')))

无需将硬编码字符串强制转换为日期/时间/时间戳,最好使用标准的SQL日期/时间/时间戳文字:

顺便说一句,您可能需要在文字中添加时区,否则它可能基于您的会话时区:

TIMESTAMP '9999-12-31 00:00:00+00:00'

无需将硬编码字符串强制转换为日期/时间/时间戳,最好使用标准的SQL日期/时间/时间戳文字:

顺便说一句,您可能需要在文字中添加时区,否则它可能基于您的会话时区:

TIMESTAMP '9999-12-31 00:00:00+00:00'