0

我正在尝试在 SSIS 2005 表达式生成器中格式化(以 yyyymmdd 格式)上个月的第一天。到目前为止,我已经成功地正确表示了年份和月份。但是,当谈到表达式的白天部分时,我被卡住了。

下面是我试图破解的完整错误代码。

RIGHT((DT_WSTR, 4) YEAR( DATEADD( "mm",-1, getdate() )), 4) +
RIGHT("0" + (DT_WSTR,2) MONTH( DATEADD( "mm",-1, getdate() )), 2)+
RIGHT("0" + (DT_WSTR,2) DAY(DATEADD("mm", DATEDIFF("mm", 0, GETDATE())-1,0)),2)

第一行返回年份(yyyy 格式),第二行返回月份(mm 格式)。但是,我坚持在第三行返回日部分(格式为 01 或仅 1)。

任何帮助表示赞赏。

4

2 回答 2

1

当天不需要做任何花哨的表达。该月的第一天始终是 01,因此您的表达式应该是您已经拥有的年份和月份加上字符串“01”的连接

RIGHT((DT_WSTR, 4) YEAR( DATEADD( "mm",-1, getdate() )), 4) +
RIGHT("0" + (DT_WSTR,2) MONTH( DATEADD( "mm",-1, getdate() )), 2)+
"01"
于 2013-07-11T12:00:29.770 回答
0

这将返回任何日期的 2 字符日部分:

right('0'+cast(day(getdate()) as Varchar(3)),2)
于 2013-07-11T18:25:01.590 回答