我會從SQL Server 2005的內置功能安排它,每隔30-35分鐘執行一次。 以下是查詢:如何編輯此SQL Server查詢以更準確?
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分鐘它將總是-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
你每天都在倒數計數器。我只是在保費期開始時跟蹤,並在每次使用保費「功能」時檢查當前時間。這樣你就沒有持續的維護和完美的準確性。 – usr
那麼如何用我當前的查詢來實現這一點? – oLdPkj
完全不是因爲你不需要它們。這是開始的錯誤方法。 – usr