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