Problem
From the expression you mentioned, it looks like fisc_wk_end_dt
column data type is string while YEAR, MONTH, DAY function's parameters must be of type date.
From the official documentation:
Syntax
YEAR(date)
Arguments
date Is a date in any date format.
Result Types
DT_I4
Possible solutions
(1) Using TOKEN() function
I will assume that fisc_wk_end_dt
contains a date stored as string, as example:
1/1/2016
And you are looking to convert it to an integer `yyyyMMdd``:
20160101
Then you can use TOKEN()
function to achieve that:
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) Trying to parse the column to date
You can try to parse the column into DT_DATE or DT_DBTIMESTAMP types, this may works if date is stored in a format that can be parsed.
(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))
References