【问题标题】:Cast (DT_TIMESTAMP) is not consistent from String to DateTime从 String 到 DateTime 的 Cast (DT_TIMESTAMP) 不一致
【发布时间】:2019-07-15 15:27:37
【问题描述】:

我正在尝试将 DT_WSTR 的输入转换为 SSIS Derived 列上的 DT_TIMESTAMP,当我这样做时,值不匹配,在一种情况下它可以正确识别年份,但在另一种情况下它认为这一天就是年份

我试过了

(DT_TIMESTAMP)((DT_WSTR,4)YEAR([Data Hora]) + RIGHT("0" + (DT_WSTR,2)MONTH([Data Hora]),2) + RIGHT("0" + (DT_WSTR,2)DAY([Data Hora]),2) + (DT_WSTR,10) Time_Column)

没有成功

08-04-19 15:31:27 这是我输入的内容,有时它会将 19 正确识别为 2019 年,但有时它认为 08 是年份,所以它输入19/04/2008,我想要第一个。

我希望在dd/mm/yyyy hh:MM:ss 中正确获取日期。

【问题讨论】:

    标签: sql-server ssis expression etl derived-column


    【解决方案1】:

    你的问题不清楚。在这个答案中,我将尝试修复提供的表达式。尝试使用以下表达式:

    (DT_DBTIMESTAMP)((DT_WSTR,4)YEAR([Data Hora]) + "-" +
    RIGHT("0" + (DT_WSTR,2)MONTH([Data Hora]),2) + "-" + 
    RIGHT("0" + (DT_WSTR,2)DAY([Data Hora]),2) + " " + 
    (DT_WSTR,10) [Time_Column]) 
    

    另一个建议是,如果日期格式很棘手(2 位数年份部分),最好使用脚本组件来解析日期值,因为它使用Date.ParseExact() 函数提供了更多选项,例如:

    Row.outDateColumn = DateTime.ParseExact(Row.inStringDate,"dd-MM-yy HH:mm:ss",System.Globalization.CultureInfo.InvariantCulture);
    
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 2011-12-08
    • 2012-10-14
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多