【发布时间】:2016-04-15 20:52:29
【问题描述】:
情况概述:我有两个数据库(一个是 DB2,一个是 MSSQL),我正在使用 SSIS 包通过作业从一个数据库提供给另一个数据库。在我们的 SQL 表中,日期时间字段设置为 SmallDateTime(多年前,目前无法更改为 DateTime)。我们现在得到的日期是 2099 年(2099 年 1 月 1 日),因为 SmallDateTime 只能达到 06/06/2079 11:59:59 的 MaxDate 失败。
我/我们的解决方案是使用派生列转换来检查日期,如果超过 2078 年,则将其设为 null。还建议在检查日期之前检查 null。
我试过这样做,
[Derived Column Name] [Derived Column ] [Expression]
[ MyDate ] [Replace "MyDate"] [MyDate == "" ? NULL(DT_WSTR,5) : MyDate]
[ VerifiedDates ] [Add As New Column] [VerifiedDates == YEAR((DT_DBDATE)MyDate) > = 2078 ? NULL(DT_WSTR,10) : MyDate]
但这并没有奏效,原因有两个。不仅表达式错误,而且还不允许我像第一次运行那样替换“MyDate”列。我不能多次更换一列吗?这些任务是否同时发生?
由于这个问题,我尝试通过表达式替换日期
[ MyDate ][Replace "MyDate"][YEAR((DT_DBDATE)MyDate) >= 2078 ? NULL(DT_WSTR, 10) : MyDate]
还有
[ MyDate ][Replace "MyDate"][MyDate == YEAR((DT_DBDATE)MyDate) >= 2078 ? NULL(DT_WSTR, 10) : MyDate]
但是这些似乎都不是正确的语法......谁能指出我的错误?
我也找不到合适的语法资源,目前使用this ref
【问题讨论】:
标签: sql-server datetime ssis