【问题标题】:ssis expression for adding time to date用于添加时间到日期的 ssis 表达式
【发布时间】: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 兼容格式。

【问题讨论】:

  • 您确定问题已解决吗?你能提供表达式吗?

标签: sql sql-server datetime ssis etl


【解决方案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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2021-06-09
    • 2014-03-09
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多