Sql server 使用逻辑运算符在SSIS包内执行字符串到日期的操作

Sql server 使用逻辑运算符在SSIS包内执行字符串到日期的操作,sql-server,datetime,ssis,Sql Server,Datetime,Ssis,入站文件上有两个字符串列,均为YYYYMMDD格式 如果第1列在2015年1月10日之后,则在第1列日期的基础上增加90天,并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回) 我正试图建立一个Dervied列模块来实现这一点,但我运气不太好 以下是我目前掌握的情况: [第1列]>=(DT_日期)“2015-10-01”?日期添加(“dd”,90,[第1列]) 请提供帮助。可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是

入站文件上有两个字符串列,均为YYYYMMDD格式

如果第1列在2015年1月10日之后,则在第1列日期的基础上增加90天,并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回)

我正试图建立一个Dervied列模块来实现这一点,但我运气不太好

以下是我目前掌握的情况:

[第1列]>=(DT_日期)“2015-10-01”?日期添加(“dd”,90,[第1列])


请提供帮助。

可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是这样做的

  • 使用派生列转换将column1转换为日期

  • 使用派生列变换检查条件并更改值

  • 使用派生列转换将其更改回字符串

  • 这是将YYYYMMDD字符串更改为date(我将其命名为Column1AsDate)的代码

    这是检查条件的代码(现在使用前面的transfor中的Column1AsDate,我将此列命名为Column1AfterCondition)

    这是将其放回字符串的代码(使用先前转换中的Column1AfterCondition)

    创建一个示例文本文件

    这是包裹

    这是检查条件后的data viewer

    这是将数据查看器转换回字符串后的数据查看器


    因此,我想在最后,您可以将适当的列映射到目的地。在本例中,“Column1As String”。现在我想起来了,我应该用更好的名字。。但希望您能理解这一点。

    可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是这样做的

  • 使用派生列转换将column1转换为日期

  • 使用派生列变换检查条件并更改值

  • 使用派生列转换将其更改回字符串

  • 这是将YYYYMMDD字符串更改为date(我将其命名为Column1AsDate)的代码

    这是检查条件的代码(现在使用前面的transfor中的Column1AsDate,我将此列命名为Column1AfterCondition)

    这是将其放回字符串的代码(使用先前转换中的Column1AfterCondition)

    创建一个示例文本文件

    这是包裹

    这是检查条件后的data viewer

    这是将数据查看器转换回字符串后的数据查看器


    因此,我想在最后,您可以将适当的列映射到目的地。在本例中,“Column1As String”。现在我想起来了,我应该用更好的名字。。但希望你能了解情况。

    是“2015年10月1日当天或之后”还是“2015年10月1日之后”。你为什么用>=而不是>运气不好?请说得更具体些。如果您遇到错误,请发布它。如果您收到意外的输出,请发布它。我可以告诉您,如果
    [Column 1]
    是字符串而不是日期,则不能在其上使用
    DATEADD
    ,也不能将其与日期进行比较。当你遇到问题时,你需要把它分解成碎片。把你的表情分解成碎片。例如,添加一个派生列,其中只有
    DATEADD(“dd”,90,[column 1])
    。它有用吗?如果不只是故障排除,直到你把它做好。是“2015年1月10日或之后”还是“2015年1月10日之后”。你为什么用>=而不是>运气不好?请说得更具体些。如果您遇到错误,请发布它。如果您收到意外的输出,请发布它。我可以告诉您,如果
    [Column 1]
    是字符串而不是日期,则不能在其上使用
    DATEADD
    ,也不能将其与日期进行比较。当你遇到问题时,你需要把它分解成碎片。把你的表情分解成碎片。例如,添加一个派生列,其中只有
    DATEADD(“dd”,90,[column 1])
    。它有用吗?如果不只是故障排除,直到你得到它的权利。
    (DT_DATE)(SUBSTRING(column1, 1, 4) + "-" + SUBSTRING(column1, 5, 2) + "-" + SUBSTRING(column1, 7, 2))
    
    Column1AsDate >= (DT_DATE)"2015-10-01" ? DATEADD("dd", 90, Column1AsDate) : Column1AsDate
    
    (DT_WSTR, 4)DATEPART("yy", Column1AfterCondition) + RIGHT("0" + (DT_WSTR, 2)DATEPART("mm", Column1AfterCondition), 2) + RIGHT("0" + (DT_WSTR, 2)DATEPART("dd", Column1AfterCondition), 2)