如何用SSIS表达式获取前一天23:59的日期时间?
获取SSIS中前一天23:59的日期时间方法
嘿,刚接触SQL/SSIS就能找到前一天0点的表达式,已经迈出很好的一步啦!要拿到前一天的23:59(精确到分或秒)其实很容易,基于你现有的逻辑稍作调整就行,给你几种实用的方案:
方案一:基于你已有的前一天00:00表达式扩展
你已经能得到前一天的00:00,那只需要给这个时间加上23小时59分59秒,就能得到当天的最后一秒(也就是23:59:59)。对应的SSIS表达式是:
DATEADD("Second", 86399, DATEADD("Day", -1,(DT_DBDATE)DATEDIFF("Day", (DT_DBDATE) 0, GETDATE())))
这里的86399是233600 + 5960 +59的总秒数,刚好是差1秒满一天的时长。如果只需要精确到分钟(23:59:00),把秒数换成1439(23*60+59),并把"Second"改成"Minute"就行。
方案二:更简洁的写法——当天0点减1秒
另一种思路是:前一天的23:59:59,本质上就是当天00:00:00往前推1秒。利用这个逻辑,表达式会更简洁:
DATEADD("Second", -1, (DT_DBDATE)DATEDIFF("Day", (DT_DBDATE) 0, GETDATE()))
同样,如果要精确到分钟(23:59:00),就把"Second"换成"Minute",数值改成-1即可。
额外补充:SQL Server中的写法(如果需要在SQL语句中使用)
要是你需要在SQL查询里实现同样的效果,SQL Server里可以这么写:
-- 获取前一天23:59:59 DATEADD(SECOND, -1, CAST(GETDATE() AS DATE)) -- 获取前一天23:59:00 DATEADD(MINUTE, -1, CAST(GETDATE() AS DATE))
内容的提问来源于stack exchange,提问作者Kamran
相关产品推荐
相关产品推荐

