SSIS表达获得前一天晚上11:59

时间:2018-05-16 20:13:35

标签: sql sql-server ssis

      DATEADD("Day", -1,(DT_DBDATE)DATEDIFF("Day", (DT_DBDATE) 0, GETDATE()))

所以我仍然习惯了SQL / SSIS。我想得到前几天的日期时间,所以它将是5/15/2018 11:59 PM。我能够研究并找到一个表达式,它在上午12点得到了上一个日期

3 个答案:

答案 0 :(得分:1)

这可能适合您的需要。

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

答案 1 :(得分:1)

这也有效(今天用于演示):

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

答案 2 :(得分: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。