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
我有一个没有年,只有日和月的数据库(示例 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