【问题标题】:SSIS Expression get previous day 11:59 pmSSIS 表达式获取前一天晚上 11:59
【发布时间】:2018-05-16 20:13:35
【问题描述】:
      DATEADD("Day", -1,(DT_DBDATE)DATEDIFF("Day", (DT_DBDATE) 0, GETDATE()))

所以我还在习惯 SQL/SSIS。我想获取前几天的 DATE TIME,所以应该是 2018 年 5 月 15 日晚上 11:59。我能够研究并找到一个在上午 12 点获取前一个日期的表达式

【问题讨论】:

    标签: sql sql-server ssis


    【解决方案1】:

    如果您尝试在 SSIS 表达式中执行此操作,您会看到类似

    DATEADD("minute", -1, (DT_DATE)((DT_DBDATE) GETDATE()))
    

    从右到左阅读..

    GETDATE() 被评估并提供截至现在的日期和时间。闪烁,它会得到更新。

    (DT_DBDATE) 是一个只支持日期,不支持时间组件的数据类型。

    但是,我们需要时间来恢复 DT_DATE 的数据类型,因为它支持时间,所以(DT_DATE)((DT_DBDATE) GETDATE()) 是在 SSIS 中将日期重置为午夜的巧妙方法。

    然后我们使用 DATEADD 函数从上面减去 1 分钟。

    留给普通读者的另一种方法是对时间组件使用字符串操作。将白天重置为午夜,然后将所需时间作为字符串连接到末尾,然后将其转换回 DT_DATE。

    【讨论】:

      【解决方案2】:

      这也可以(使用今天的日期来演示):

      select cast(cast(getdate() as date) as datetime)-(1/cast(1440 as float))
      

      【讨论】:

        【解决方案3】:

        这可能满足您的需求。

        SELECT DATEADD(MINUTE, -1, DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-18
          • 2022-10-13
          • 1970-01-01
          • 1970-01-01
          • 2022-01-09
          • 2016-12-29
          • 2021-09-04
          相关资源
          最近更新 更多