使用SSIS包将csv列转换为表列的日期格式?
Posted
技术标签:
【中文标题】使用SSIS包将csv列转换为表列的日期格式?【英文标题】:Date format conversion of cvs column to table column using SSIS Package? 【发布时间】: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 包中做到这一点。我尝试了转换和转换但我没有成功。有人可以帮我吗?
【问题讨论】:
【参考方案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))
【讨论】:
以上是关于使用SSIS包将csv列转换为表列的日期格式?的主要内容,如果未能解决你的问题,请参考以下文章