我们假设有些活动于2000年1月1日开始,每36小时45分钟重复一次。
此时在我的地方,它是2018年4月4日18:30。
我怎样才能在SQL中计算
我的活动最近一次发生的日期和时间
我的活动下一次发生的日期和时间?
我的第一个想法是将我的句号循环添加到开始日期,直到达到所需的日期,但是对于更长的时间跨度,这将是非常无效的,我相信
感谢您的帮助。
答案 0 :(得分:0)
我们可以用这个整数数学的结果来参数化一个sql语句......
int now = current time in minutes after 1 Jan, 2000
int period = 36 * 60 + 45
int eventsBeforeNow = now / period /* where '/' is a truncating, integer divide */
int lastEventTime = eventsBeforeNow * period
int nextEventTime = lastEventTime + period
答案 1 :(得分:0)
好的,我自己找到了答案。似乎工作
declare @minutes int,@n int,@period int
SET @period=36*60+45
select @minutes=datediff(minute,'2000-01-01 00:00:00','2018-04-04 18:30:00')
set @n=@minutes/@period
select DATEADD(minute,@n*@period,'2000-01-01 00:00:00')
select DATEADD(minute,(@n+1)*@period,'2000-01-01 00:00:00')
我的示例活动的近期时间是2018-04-04 14:15:00.000
我的示例活动的下一次是2018-04-06 03:00:00.000