【问题标题】:SSIS convert date in mmddyyyy format to date format using SSIS expressionSSIS 使用 SSIS 表达式将 mmddyyyy 格式的日期转换为日期格式
【发布时间】:2021-06-09 22:00:34
【问题描述】:

我正在接收 MMddyyyy 格式的日期,但想将其转换为 SQL/SSIS yyyy-MM-dd 中的日期格式,我该如何使用 SSIS 表达式。

我收到的日期示例是03051978,但希望它出现在1978-03-05。

谢谢

【问题讨论】:

标签: sql-server date ssis etl data-conversion


【解决方案1】:

您可以使用以下表达式:

(DT_DATE)(RIGHT("0000" + RIGHT("03051978",4),4) + "-" + RIGHT("00" + LEFT("03051978",2),2) + "-" + RIGHT("00" + SUBSTRING("03051978",3,2),2))

以列名替换"03051978"为例:

(DT_DATE)(RIGHT("0000" + RIGHT([DateColumn],4),4) + "-" + RIGHT("00" + LEFT([DateColumn],2),2) + "-" + RIGHT("00" + SUBSTRING([DateColumn],3,2),2))

SSIS 表达式测试工具的屏幕截图

【讨论】:

    【解决方案2】:

    这是您的 SSIS 表达式。显然,这里的假设是日和月部分总是两位数:

    (DT_DBDATE)(SUBSTRING(col,5,4) + "-" + SUBSTRING(col,1,2) + "-" + SUBSTRING(col,3,2))
    

    【讨论】:

    • 谢谢!如果月份和日期只有 1 位数字,表达式会有什么不同?
    • @HappyCoder123,它会使自己无法使用。它会破坏整个解析逻辑。
    【解决方案3】:

    我会使用脚本组件。

    DateTime.ParseExact([datecol],"MMddyyyy", System.Globalization.CultureInfo.InvariantCulture);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2013-05-18
      相关资源
      最近更新 更多