UPDATE超過90天檢查日期時間在DB是通過存儲過程
顯然我並沒有包括足夠的數據,對不起!
當'campaign_Date'超過90天時,我需要做的是設置'campaign_Status'= 6。
您好,
我有其存儲DATETIME柱(campaign_Date)。使用存儲過程我需要檢查存儲日期是否爲90天(或更多)。
任何幫助將是偉大的。
謝謝。
UPDATE超過90天檢查日期時間在DB是通過存儲過程
顯然我並沒有包括足夠的數據,對不起!
當'campaign_Date'超過90天時,我需要做的是設置'campaign_Status'= 6。
您好,
我有其存儲DATETIME柱(campaign_Date)。使用存儲過程我需要檢查存儲日期是否爲90天(或更多)。
任何幫助將是偉大的。
謝謝。
見DateAdd函數
http://msdn.microsoft.com/en-us/library/ms186819.aspx
SELECT *
FROM MyTable
WHERE Campaign_Date <= DateAdd (d, -90, GetDate())
非常感謝你 – DataStructors23 2017-04-18 22:21:15
這將返回所有舊的活動:
SELECT *
FROM mytable
WHERE campaign_Date <= DATEADD(day, -90, GETDATE())
這將選擇1
如果活動是舊的,0
否則:
SELECT CASE WHEN campaign_Date <= DATEADD(day, -90, GETDATE()) THEN 1 ELSE 0 END
FROM mytable
請注意,第一個查詢條件是sargable:它將允許使用索引來過濾日期。
這將更新所有舊的活動狀態爲6
:
UPDATE mytable
SET campaign_status = 6
WHERE campaign_Date <= DATEADD(day, -90, GETDATE())
SELECT IIF(DATEDIFF(d, campaign_date, getdate()) >= 90, true, false)
AS IsNinetyOrMoreDaysOld
FROM myTable
編輯:如果你想選擇哪個是90天或更長時間的舊記錄,
SELECT campaign_date
FROM myTable
WHERE DATEDIFF(d, campaign_date, getdate()) >= 90
select campaign_Date,
case when getdate() - campaign_Date >= 90 then 'yes' else 'no' end as Is90DaysOldOrMore
from MyTable
更新:
您可以更新這樣的記錄:
update MyTable
set campaign_Status = 6
where getdate() - campaign_Date >= 90
由於這種狀態會過時很快,因爲它是迄今爲止相關的,你可以把一個計算列來代替。
@Munklefish:看到我的更新 – RedFilter 2009-09-28 15:44:59
下面是對以前的答案的變化,包裹在一個存儲過程(如似乎在問):
CREATE PROC sp_Campaign_Archive AS
UPDATE [Campaign Table]
SET Campaign_Status = 6
WHERE DateDiff(day,Campaign_Date,GetDate()) >= 90
GO
你的意思是你想從那裏Campaign_Date是超過90天返回表中的所有行舊? – 2009-09-28 14:03:25