【问题标题】:SSIS expression to convert string to date将字符串转换为日期的 SSIS 表达式
【发布时间】:2012-08-02 11:34:20
【问题描述】:

使用 SQL Server 2008、Visual Studio 2008。

尝试将数据从字符串列转换为派生日期列。 该字符串可以有两种格式,一种是:“dd/mm/yy”(可以假定为 20 世纪),或者是“dd/mm/yyyy”。例如“02/05/12”、“23/12/02”、“13/08/2012”。

所以我为 Derived 列尝试了这样的表达式:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

但 Visual Studio 给出错误: “表达式无效,或存在内存不足错误”。

它接受一个更简单的表达式,例如:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)("20" + SUBSTRING(DateReceived,7,2) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

但此表达式仅适用于“dd/mm/yy”格式。

我做错了什么?谢谢。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    没关系,错误是由于拼写错误造成的。 (在列类型上调用 RTRIM,而不是列名)。

    以下作品:

    DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DateReceived)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))
    

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多