2009-12-17 38 views
1

如何将日期时间转换为SSIS中的日期?如何从SSIS中的SQL datetime值提取日期?

我想执行一个聚合查询,它将按特定日期分组。为了做到这一点,我试图提取时间戳的日期部分(作为日期时间存储),以便我可以在下一步执行GROUP BY。

我看了DATEPART函数,但它看起来像我将不得不多次调用它来检索月份,日期和年份,将它们连接在一起,然后解析新的日期。有一个更好的方法来做到这一点。

回答

6

SSIS可以使用数据转换转换,你有DT_DBTIMESTAMP和输出使用DT_DBDATE

+0

这工作完全输入值。谢谢! – 2009-12-17 23:18:38

0

不幸的是,这是最好的方式(在我看来),并根据您的目标栏(如果这是流量结束的地方),它仍然有00:00:00:000上面。但是你可能已经知道了= P。

0

这里是你,你可以在T-SQL做到这一点,我假设SSIS允许完全访问SQL Server的功能:

SELECT CAST(FLOOR(CAST(getdate() AS float)) AS datetime) 

基本上,它的日期转换为浮动(时间的一小部分一天),使用floor来切断小数(转换为int可能会舍入),然后将浮点数转换回日期。

高效,有效,并且不需要给DATEPART()多次调用

0

选择DATEADD(DD,0,DATEDIFF(DD,0,GETDATE()))

2

我的第一个问题将是如果您正在处理同一服务器上的dbs中包含的数据,那么在将数据带到SSIS之前,为什么不只是在SQL Server中执行所有的转换和分组?出于性能原因,最好在将数据引入SSIS之前对数据SQL Server进行任何按摩。但是,如果您正在处理异构数据(oracle,excel,文本文件,来自不同sql服务器实例的数据),那么可以使用派生列转换并使用转换(DT_DBDATE)转换日期,然后使用聚合组件做你的小组。

相关问题