sql-server - ssis 中的日期值错误

标签 sql-server date ssis etl derived-column

我正在与 ssis 合作。我有一列包含格式整数 YYYYMMDD 的日期:例如今天我得到 20190214 .我正在使用派生列将其转换为格式日期 YYYY-MM-DD以我为例 2019-02-14
但有时我会收到错误的值,例如 20188101 .我怎么能测试我有好的值(value)要转换成日期?

最佳答案

有3种方法可以实现

(1) 使用另一个派生列

除了第一个派生列之外,您还可以使用以下表达式添加另一个派生列:

(DT_DATE)(LEFT([DateColumn],4) + "-" +  SUBSTRING([DateColumn],5,2)  + "-" + RIGHT([DateColumn],2))

如果日期值不正确,则从 Error Output 重定向错误configuration ,您可以从错误输出处理这些错误值。

有用的链接
  • USING THE ERROR OUTPUT OF THE DERIVED COLUMN
  • How to prevent CAST errors on SSIS?

  • (2) 使用脚本组件

    添加脚本组件以检查值是否正确,并添加类型为 OutDateColumn 的输出列,使用类似的代码(VB.NET)
    IF Not Row.DateColumn_IsNULL Then
    
    dim dtDate as DateTime
    
        If DateTime.TryParseExact(Row.DateColumn,"yyyyMMdd",System.Globalization.InvariantCulture,System.Globalization.DateTimeStyles.None  , dtDate ) Then
    
            Row.outDateColumn = dtDate.ToString("yyyy-MM-dd")
    
        Else
    
            Row.outDateColumn_IsNull = True
    
        End If
    
    
    Else
    
        Row.outDateColumn_IsNull = True
    
    End If
    

    (3) 添加数据转换变换

    在派生列转换之后,添加一个数据转换转换并尝试将您添加的日期派生列转换为DT_DATE ,如果转换失败,则按照第一种方法中的说明处理错误输出中的错误值。

    关于sql-server - ssis 中的日期值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695587/

    相关文章:

    sql-server - 使用 tSQLt 对计算列进行单元测试

    sql-server - 解析 SQL Server 集成服务包中的 JSON 数据?

    sql - SSIS 用户定义类型

    sql-server - 将 SQL Server 数据库复制到测试数据库的最简单方法?

    sql-server - dockerfile 如何将 SQL Server 公开为本地主机?

    excel - 按年份计算excel中两个范围之间的记录数并处理空日期

    java - 在 GMT 中获取 UNIX 时间戳的快速 Java 6 实现

    python-3.x - 在 django/python 中计算每月数据

    mysql - 使用 SQL 命令中的 Order by/sort 和 Merge Join 为数百万行优化 SSIS 包

    sql - 将 FOR XML AUTO 结果保存到 SQL 中的变量