我将从 SQL Server 2005 的内置功能中安排它每 30-35 分钟执行一次。以下是查询:
UPDATE PREMIUM_SERVICE2 SET ndays = ndays - 1
WHERE strAccountID NOT IN
(SELECT strAccountID FROM CURRENTUSER)
AND ndays > 0 AND (PremStart < DATEADD(DAY,-1,GETDATE()))
DELETE FROM PREMIUM_SERVICE2 where nDays = 0
但是有1个问题。一旦他们从网站获得溢价,它就会像这样添加它,10/11/2013 11:50:40 PM
这意味着每 30 分钟执行这 2 个查询时,它将始终-1
开启nDays
而不是大约 1 天。所以,我想像这样添加它:
UPDATE PREMIUM_SERVICE2 SET ndays = ndays - 1, PremStart = GetDate()
WHERE strAccountID NOT IN
(SELECT strAccountID FROM CURRENTUSER)
AND ndays > 0 AND (PremStart < DATEADD(DAY,-1,GETDATE()))
DELETE FROM PREMIUM_SERVICE2 where nDays = 0
因此,当它更新时,它也会更新,PremStart
但这很糟糕,因为现在它可能会错过 30 分钟,而当他们有 30 天的保费时.. 它可能会错误地添加它们至少 1 天,这使得它有点糟糕,因为计划的作业将每 30 分钟执行一次。那么,如何编辑第一个查询以确保它更准确,并且只有在它真正通过时才会实际减去 1 天?我希望你们明白我的意思。我使用 SQL Server 2005