ssis 使用脚本组件添加数据库的日期

ssis adding year to date of database with script component

我有一个没有年,只有日和月的数据库(示例 20-12)。因此,数据库会自动添加年份。这样做的问题是,在某些情况下年份会提前,例如 20-12-2020,而实际上是 2019 年。

table示例:

order_numberdate_of_order(原table)
1 20-12

当我在 ssms 中添加数据库时的样子:

order_number date_of_order 1 20-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# 的公式:

OrderDate > GETDATE() ? DATEADD("yy",-1,OrderDate) : OrderDate