我正在尝试将nvarchar转换为日期,但我一直在下面遇到此错误
tt_11132转换[表达式]有一个错误评估输出列[run_date1]。错误消息是[<> [to_date]:用于转换为日期的无效字符串... t:to_date(u:u:'20190304',u:'mm/dd/yyyy hh24:mi:ss')]。
但我的功能不包括'MM/DD/YYYY HH24:MI:SS'。这是我的功能供参考。
to_date(to_char(to_date(run_date),'mmddyyyy'),'mm/dd/yyyy')
请帮助
谢谢
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
使用另一种格式,只需相应地替换第二个参数。
用TO_DATE(RUN_DATE, 'YYYYMMDD')