ssis使用脚本组件添加数据库的年份截止日期
我有一个没有年份、只有日期和月份的数据库(示例20-12)。因此,数据库会自动添加年份。问题是,在某些情况下,年份提前了,例如20-12-2020年,而实际上是2019年 表格示例: 订单号订单日期(原始表格)ssis使用脚本组件添加数据库的年份截止日期,ssis,script-component,Ssis,Script Component,我有一个没有年份、只有日期和月份的数据库(示例20-12)。因此,数据库会自动添加年份。问题是,在某些情况下,年份提前了,例如20-12-2020年,而实际上是2019年 表格示例: 订单号订单日期(原始表格) 120-12 在ssms中添加数据库时的外观: 订单号订单日期 120-12-2020 我想做的是使用脚本组件为日期和月份添加正确的年份。例如,如果日期在过去,则将其设置为2019年。如果日期是在未来,则定为2020年 这将为您提供前进的道路。您只需将该列分为月和日: /
120-12 在ssms中添加数据库时的外观: 订单号订单日期 120-12-2020 我想做的是使用脚本组件为日期和月份添加正确的年份。例如,如果日期在过去,则将其设置为2019年。如果日期是在未来,则定为2020年
这将为您提供前进的道路。您只需将该列分为月和日:
//This will split out your date/month
string OrigCol = "20-12"; //Replace this with Rows.YourColumnName
string[] col = OrigCol.Split('-');
int d = Int32.Parse(col[0]);
int m = Int32.Parse(col[1]);
DateTime dt = new DateTime(DateTime.Now.Year, m, d);
if (dt > DateTime.Now)
dt = dt.AddYears(-1);
//Set your new column to dt
此代码将创建一个包含当前年份的日期,如果结果是在未来,则仅减去一年
如果您的列已经是日期(默认值为2020),则可以直接跳转到If
DateTime dt = Row.YourColumnName;
if (dt > DateTime.Now)
dt = dt.AddYears(-1);
//Set your new column to dt
如果已经以日期开始,则可以使用派生列进行转换: 将此公式用作类似于上述c#的公式:
我尝试了上面的代码,但出现了以下错误。请参见上面的屏幕截图。第一行代码中没有OrigCol的名称,但还有另一个问题。您的源是日期而不是字符串。我将修改我的答案,以满足2020年的日期,而不是字符串。非常感谢。这个解决方案对我帮助最大。
OrderDate > GETDATE() ? DATEADD("yy",-1,OrderDate) : OrderDate