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

Sql server 如何仅从SSIS中的SQL datetime值提取日期?,sql-server,datetime,ssis,Sql Server,Datetime,Ssis,如何在SSIS中将日期时间转换为日期 我正在尝试执行一个聚合查询,该查询将按特定日期分组。为了做到这一点,我试图提取时间戳的日期部分(存储为datetime),以便在下一步执行GROUPBY 我已经研究了DATEPART函数,但是看起来我必须多次调用它来检索月份、日期和年份,将它们连接在一起,然后解析新的日期。必须有更好的方法来做到这一点。不幸的是,这是最好的方法(在我看来),并且取决于您的目的地列(如果该列是流量结束的地方),它仍然会有00:00:000。但您可能已经想到了=P.这里是您可以在

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

我正在尝试执行一个聚合查询,该查询将按特定日期分组。为了做到这一点,我试图提取时间戳的日期部分(存储为datetime),以便在下一步执行GROUPBY


我已经研究了DATEPART函数,但是看起来我必须多次调用它来检索月份、日期和年份,将它们连接在一起,然后解析新的日期。必须有更好的方法来做到这一点。

不幸的是,这是最好的方法(在我看来),并且取决于您的目的地列(如果该列是流量结束的地方),它仍然会有00:00:000。但您可能已经想到了=P.

这里是您可以在T-SQL中实现的,我假设SSIS允许完全访问SQL Server功能:

 SELECT CAST( FLOOR( CAST(getdate() AS float) ) AS datetime)
基本上,它将日期转换为浮点数(时间是一天的一小部分),使用floor切掉小数点(强制转换为int可能会四舍五入),然后将浮点数转换回日期

高效、有效且不需要多次调用DATEPART()

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

语法是

DATEADD(interval, number, date)
疑问是

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

我的第一个问题是,如果您在同一台服务器上处理dbs中包含的数据,为什么不在将数据提交给SSI之前在SQL server中执行所有的强制转换和分组?出于性能原因,最好在将数据导入SSIS之前对SQL Server进行任何处理。但是,如果您处理的是异构数据(oracle、excel、文本文件、来自不同sql server实例的数据),则可以使用派生列转换并使用cast(DT_DBDATE)转换日期然后使用聚合组件进行分组。

SSIS中,您可以使用数据转换,输入值使用
DT\u DBTIMESTAMP
,输出值使用
DT\u DBDATE