如何从 SSIS 中的 SQL datetime 值中提取日期?

3

如何在SSIS中将日期时间转换为日期?

我正在尝试执行一个分组查询,其中将按特定日期进行分组。为此,我正在尝试提取时间戳的日期部分(存储为datetime),以便在下一步执行GROUP BY。

我已经查看了DATEPART函数,但是看起来我需要多次调用它才能检索月份、日期和年份,将它们连接在一起,然后解析新日期。肯定有更好的方法来完成这个任务。

5个回答

8

SSIS中,您可以使用数据转换转换(Data Conversion Transformation),对于输入值,您可以使用DT_DBTIMESTAMP,而对于输出,请使用DT_DBDATE


2

我的第一个问题是,如果您正在处理存储在同一服务器上的数据库中的数据-为什么不在将数据传输到SSIS之前在SQL Server中执行所有类型转换和分组操作呢?出于性能原因,在将数据带入SSIS之前最好在SQL Server中对数据进行任何调整。但是,如果您正在处理异构数据(Oracle、Excel、文本文件、来自不同SQL Server实例的数据),则可以使用派生列转换并使用转换函数(cast)(DT_DBDATE)将日期转换,然后使用聚合组件进行分组。


0
这是如何在 T-SQL 中完成的,我假设 SSIS 允许完全访问 SQL Server 函数:
 SELECT CAST( FLOOR( CAST(getdate() AS float) ) AS datetime)

基本上,它将日期转换为浮点数(时间是一天的一部分),使用 floor 函数截去小数部分(强制转换为 int 可能会四舍五入),然后将浮点数再次转换为日期。

高效、可行,并且不需要多次调用 DATEPART() 函数。


0

DATEADD() 函数将时间/日期间隔添加到日期,然后返回日期。

语法如下:

DATEADD(interval, number, date)

查询是

select  DATEADD(dd,0, DATEDIFF(dd, 0, GETDATE()))

0

不幸的是,这是我认为的最好的方法,取决于您的目标列(如果流程在那里结束),它仍将带有00:00:00:000。但你可能已经想到了 =P。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接