用于添加时间到日期的 ssis 表达式

Posted

技术标签:

【中文标题】用于添加时间到日期的 ssis 表达式【英文标题】:ssis expression for adding time to date 【发布时间】:2019-06-14 13:57:13 【问题描述】:

添加时间价值

我的日期值来自 ssis 中的某个变量。我想在这个日期添加晚上 8 点的时间戳。该怎么做?

DECLARE @a  int
SET @a = 20190611
--SELECT CONVERT(DATETIME,   CONVERT(DATE, CAST(CAST(@a AS INT) AS CHAR(8)), 112)  , @a)
SELECT DATEADD("hh", 20,CONVERT(DATETIME,   CONVERT(DATE, CAST(CAST(@a AS INT) AS CHAR(8)), 112)  , @a) )

我需要将此表达式转换为 SSIS 兼容格式。

【问题讨论】:

您确定问题已解决吗?你能提供表达式吗? 【参考方案1】:

假设你的变量是一个日期时间并且有一些时间

首先截断时间(通过转换),然后添加 20 小时。

这是另一个变量的公式:

DATEADD("hh",20, (DT_DATE)(DT_DBDATE)GETDATE())

结果: 2019 年 6 月 14 日晚上 8:00:00

只需将 getdate() 替换为您的变量即可。

【讨论】:

谢谢,但正如您在代码中看到的,变量是 int 格式。所以我们也需要转换它。 "我的日期值来自 ssis 中的某个变量。"我会提供更新。【参考方案2】:

您可以简单地转换为字符串并与200000连接并重新转换为整数以获得yyyyMmddHHmmss格式:

(DT_I4)((DT_WSTR,20)@[User::DateIntegerVariable] + "200000")

如果此问题与您的 previous question 有关,请使用以下内容:

(DT_I4)(REPLACE(SUBSTRING((DT_WSTR,50)DATEADD("dd", -1 - (DATEPART("dw", getdate()) % 7), getdate()),1,10),"-","") + "200000")

【讨论】:

以上是关于用于添加时间到日期的 ssis 表达式的主要内容,如果未能解决你的问题,请参考以下文章

无法在 SSIS 表达式生成器中转换日期

SSIS:将纪元列转换为日期

为啥派生列组件的表达式不适用于 SSIS 中的空值?

使用 SSIS 派生列提取日期值

使用 SSIS 包将日期时间戳列添加到最终目标表

使用表达式生成器删除 SQL SSIS 变量中的结尾括号?