我无法使用以下代码应用转换。出现错误
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))
引用文献
关于sql-server - 年函数不支持 dt_wstr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754518/