我正在尝试将nvarchar转换为日期,但是我一直在下面收到此错误
TT_11132转换[表达式]评估输出列[Run_Date1]时出错。错误消息为[<> [TO_DATE]:转换为日期的无效字符串... t:TO_DATE(u:'20190304',u:'MM / DD / YYYY HH24:MI:SS')]。
但是我的函数不包含'MM / DD / YYYY HH24:MI:SS'。这是我的功能供参考。
TO_DATE(TO_CHAR(to_date(RUN_DATE),'mmddyyyyy'),'mm / dd / yyyy')
请帮助
谢谢
答案 0 :(得分:1)
Samik是正确的,只需使用TO_DATE(RUN_DATE, 'YYYYMMDD')
我想补充的是为什么您的功能错误的一些解释。所以从最里面剥离它:
to_date(RUN_DATE)
将RUN_DATE字符串转换为DATE
,尝试猜测未给出的格式。让我们将其结果称为NewDate
并进行进一步分析:
TO_CHAR(NewDate,'mmddyyyy')
现在,这会将NewDate
转换为mmddyyyy
格式的字符串。让我们将其称为NewString_MMDDYYYY
,看看它在哪里找到我们。剩下的最终功能为:
TO_DATE(NewString_MMDDYYYY,'mm/dd/yyyy')
看到错误了吗?您告诉Informatica将NewString_MMDDYYYY
转换为日期。然后,您告诉函数它以mm/dd/yyyy
格式编写-显然没有使用,因为TO_CHAR函数被告知将其存储在mmddyyyy
中。
因此,如果您输入的RUN_DATE
为YYYYMMDD
格式,那么您只需要做TO_DATE(RUN_DATE, 'YYYYMMDD')
。如果RUN_DATE
使用了另一种formati,只需相应地替换第二个参数。
答案 1 :(得分:0)
仅用TO_DATE(RUN_DATE, 'YYYYMMDD')