【问题标题】:Date format conversion of cvs column to table column using SSIS Package?使用SSIS包将csv列转换为表列的日期格式?
【发布时间】:2014-03-07 22:09:14
【问题描述】:

我正在使用 SSIS 包将数据从 cvs 文件导入到表中。

CVS File

Report_Date
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125
20140125

我想转换为 2014-02-05 日期格式。我如何在 ssis 包中做到这一点。我尝试了转换和转换但我没有成功。有人可以帮我吗?

【问题讨论】:

    标签: sql tsql ssis sql-server-2012 dataflow


    【解决方案1】:

    您可以使用CONVERT( 函数将其更改为日期。例如

    SELECT CONVERT(DATE,'20140210',112)
    

    将其更改为日期后,您可以将其输出为您想要的任何格式。

    阅读http://msdn.microsoft.com/en-us/library/ms187928.aspx 以获取转换时可用于DATE 的所有样式列表。 112 代表yyyymmdd 格式。

    如果日期存储为数字字段,则需要先将其转换为 VARCHAR,然后再将其转换为 DATE,

    SELECT CONVERT(DATE,CONVERT(VARCHAR(10),20140204),112)
    

    【讨论】:

    • 我曾在列转换中尝试过上述查询,但出现错误。
    • 这可能来自 SQL Server 将其解释为数字字段,而不是字符串。在这种情况下,只需在尝试将其解析为日期之前将其转换为 Varchar。
    • 谢谢大家,我通过使用下面的表达式 (DT_DBTIMESTAMP)(SUBSTRING([Report_Date],1,4) + "-" + SUBSTRING([Report_Date],5,2) + "- " + SUBSTRING([Report_Date],7,2))
    【解决方案2】:

    我没有用 SSIS 测试过,但是如果你看看这些查询的 TSQL 输出

    Select Cast(20140125 AS DATETIME)
    
    Select Cast('20140125' AS DATETIME)
    

    第一个失败,出现“将表达式转换为数据类型日期时间的算术溢出错误”。 但是第二次成功..这意味着如果您先将其转换为字符串,然后再转换为 DateTime,它应该可以工作..如果能够直接从 SSIS 执行,将更新您

    【讨论】:

    • 我们可以在列转换中使用选择语句吗?我尝试使用上述查询(SELECT cast('[Report_Date]' as DATETIME))
    【解决方案3】:
    (DT_DBTIMESTAMP)(SUBSTRING([Report_Date],1,4) + "-" + SUBSTRING([Report_Date],5,2) + "-" + SUBSTRING([Report_Date],7,2))
    

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多