如何从SQL SSIS中删除日期时间字符串的日期?

rry*_*man 4 sql t-sql ssis business-intelligence

我正在开发一个数据仓库项目,并且想知道如何(最好是在数据流中的派生列组件中)从SQL日期时间记录中删除日期.

一旦我将日期时间转换为一段时间,我将在时间维度表中查找相关时间记录的时间.

有人能给我一个简单的函数来在派生列转换中完成这个吗?

示例:将日期时间(例如"12/02/2008 11:32:21 AM")转换为"11:32:21 AM".

Mic*_*tin 7

我只需要DT_DBTIME进行强制转换(使用派生列转换或转换类型转换).DT_DBTIME仅包含(小时,分钟,秒)日期/时间的一部分,因此您将摆脱日期部分.


小智 6

如果您需要在变量表达式中执行此操作,迈克尔的解决方案将不起作用,但您可以使用以下表达式:

(DT_DATE)(DT_DBDATE)GETDATE()
Run Code Online (Sandbox Code Playgroud)

(DT_DBDATE) 仅将当前日期和时间转换为日期。但新的数据类型与 SSIS 的日期时间不兼容。因此,您必须使用 (DT_DATE) 来转换为兼容类型。

该解决方案由 Russel Loski 提供,他已将其发布在他的博客中: http ://www.bidn.com/blogs/RussLoski/ssas/1458/converting-datetime-to-date-in-ssis

  • 没有回答原来的问题,但帮助我了解如何将全长日期时间转换为数据库插入的适当格式。感谢那 :) (2认同)

小智 5

实际上,如果您像这样反转前两个表达式: (DT_DBDATE)(DT_DATE)GETDATE() 而不是(DT_DATE)(DT_DBDATE)GETDATE(),那么您将TRUNCATE在日期字段中显示时间。

如果DT_DATE表达式位于DT_DBDATE表达式之前,则输出中仍将包含时间部分,但它将重置为全零。