将varchar(50)转换为日期格式';yyyy-mm-dd';在teradata中?

将varchar(50)转换为日期格式';yyyy-mm-dd';在teradata中?,teradata,Teradata,创建时,我有一个定义为Dateformatyyyy-mm-dd的列 我想从另一个表中插入数据,该表的列为varchar(50) 在选择并插入表格时,我遇到了这个错误 插入失败。2665:无效日期 有人能帮我铸造这个吗 INSERT INTO TEMP_TABLES.FACT ( CUSTOMER_ACCOUNT_ID, LOB_START_DATE, ) SEL CUSTOMER_ACCOUNT_ID, I.start_date as LOB_START_DATE, FROM

创建时,我有一个定义为
Date
format
yyyy-mm-dd
的列

我想从另一个表中插入数据,该表的列为
varchar(50)

在选择并插入表格时,我遇到了这个错误

插入失败。2665:无效日期

有人能帮我铸造这个吗

INSERT INTO TEMP_TABLES.FACT
(

CUSTOMER_ACCOUNT_ID, 
LOB_START_DATE, 

)

SEL  
CUSTOMER_ACCOUNT_ID,
I.start_date   as LOB_START_DATE,

FROM  #LOGIN I

left join JOURNEY_TABLE.DOTCOM_DIM d1
on I.PAGES = d1.PAGE_DESC
这是存储在varchar(50)字段中的日期示例:2014-04-03


提前感谢

如果有帮助的话,这里有一个查询,可以让您识别日期无效的行:

select
*
from
#login t1
left outer join sys_calendar.calendar t2
on t1.start_date =  cast (cast(t2.calendar_date as date format 'YYYY-MM-DD') as char(10))
where t2.calendar_date is null

此查询返回的任何行都将具有无效日期。

如果有帮助,以下查询应允许您识别具有无效日期的行:

select
*
from
#login t1
left outer join sys_calendar.calendar t2
on t1.start_date =  cast (cast(t2.calendar_date as date format 'YYYY-MM-DD') as char(10))
where t2.calendar_date is null

从该查询返回的任何行都将具有无效日期。

我认为您所需要的只是
格式
语句


我想你所需要的就是
格式
语句


在较新版本的Teradata中,有一个TRYCAST()函数。如果转换失败,此函数将尝试强制转换数据并返回
NULL
,而不是语句失败

INSERT INTO TEMP_TABLES.FACT
(
CUSTOMER_ACCOUNT_ID, 
LOB_START_DATE, 
)
SELECT Customer_Account_ID
     , TRYCAST(I.Start_Date AS DATE) AS LOB_START_DATE
FROM  #LOGIN I
LEFT JOIN JOURNEY_TABLE.DOTCOM_DIM d1
  ON I.Pages = d1.Page_Desc;

在较新版本的Teradata中,有一个TRYCAST()函数。如果转换失败,此函数将尝试强制转换数据并返回
NULL
,而不是语句失败

INSERT INTO TEMP_TABLES.FACT
(
CUSTOMER_ACCOUNT_ID, 
LOB_START_DATE, 
)
SELECT Customer_Account_ID
     , TRYCAST(I.Start_Date AS DATE) AS LOB_START_DATE
FROM  #LOGIN I
LEFT JOIN JOURNEY_TABLE.DOTCOM_DIM d1
  ON I.Pages = d1.Page_Desc;

你能发布实际的Insert语句吗?你能发布一个存储在VARCHAR(50)字段中的日期示例吗?像这样存储在2014-04-03…我要做的第一件事是只从该列中取出前10个字符,因为你知道日期不能超过10个字节。但是如果你有任何对日期无效的内容,它就会失败。你能发布实际的Insert语句吗?你能发布一个存储在VARCHAR(50)字段中的日期示例吗?像这样存储在2014-04-03…我要做的第一件事是只从该列中删除前10个字符,因为你知道日期不能超过10字节。但是,如果你有任何东西是无效的日期,它将失败。