我无法使用以下代码应用转换。出现错误
year函数不支持dt_wstr。
iam使用的表达式是:
(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))
答案 0 :(得分:2)
根据您提到的表达式,看起来fisc_wk_end_dt
列数据类型为字符串,而YEAR,MONTH,DAY函数的参数必须为date类型。
摘自官方文档:
语法
YEAR(日期)
参数
date是任何日期格式的日期。
结果类型
DT_I4
我将假设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)
您可以尝试将列解析为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))