年份函数不支持 dt_wstr

The year function doesn't support dt_wstr

我无法使用以下代码应用转换。收到错误

The year function doesn't support dt_wstr.

我使用的表达式是:

(DT_I4)((DT_WSTR,4)YEAR(fisc_wk_end_dt) + 
       RIGHT("0" + (DT_WSTR,2)MONTH(fisc_wk_end_dt),2) + 
       RIGHT("0" + (DT_WSTR,2)DAY(fisc_wk_end_dt),2))

问题

从你提到的表达式来看,fisc_wk_end_dt列数据类型是字符串,而 YEAR、MONTH、DAY 函数的参数必须是日期类型。


来自官方文档:

语法

YEAR(date)

参数

date Is a date in any date format.

结果类型

DT_I4


可能的解决方案

(1) 使用 TOKEN() 函数

我假设 fisc_wk_end_dt 包含一个存储为字符串的日期,例如:

1/1/2016

并且您希望将其转换为整数 `yyyyMMdd``:

20160101

然后你可以使用TOKEN()函数来实现:

TOKEN(fisc_wk_end_dt,"/",3) + RIGHT("0" + TOKEN(fisc_wk_end_dt,"/",2),2) + RIGHT("0" + TOKEN(fisc_wk_end_dt,"/",1),2) 

(2) 尝试将列解析为日期

您可以尝试将列解析为 DT_DATE 或 DT_DBTIMESTAMP 类型,如果日期以可以解析的格式存储,这可能会起作用。

(DT_I4)((DT_WSTR,4)YEAR((DT_DBTIMESTAMP)fisc_wk_end_dt) + 
   RIGHT("0" + (DT_WSTR,2)MONTH((DT_DBTIMESTAMP)fisc_wk_end_dt),2) + 
   RIGHT("0" + (DT_WSTR,2)DAY((DT_DBTIMESTAMP )fisc_wk_end_dt),2))

参考资料