我有一个包含 StartDate 和 EndDate (日期时间)
的表格我在SQL Server 2008R2中寻找一个很好的查询,它将检查StartDate和EndDate是否相等,如果是,则将另一个值更改为“0”
简而言之,我的程序具有“学习环境”,每个环境都带有状态代码(打开/关闭/存档)。晚上我正在运行一些预定程序,如果我将开始和结束日期设置为同一日期,状态应该更改为关闭。
所以查询应该:
答案 0 :(得分:1)
听起来像一个简单的UPDATE
声明:
UPDATE table
SET status = 0
WHERE CAST(StartDate AS DATE) = CAST(EndDate AS DATE)
AND CAST(StartDate AS DATE) = CAST(GETDATE() AS DATE)
答案 1 :(得分:1)
我喜欢使用DateAdd和DateDiff,因为它总是比其他技术更有效率。
工作方式: http://sqlfiddle.com/#!6/f1a76/1
UPDATE Table1
SET Status = 0
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, [StartDate])) = DATEADD(dd, 0, DATEDIFF(dd, 0, [EndDate]))
AND DATEADD(dd, 0, DATEDIFF(dd, 0, [StartDate])) = DATEADD(dd, 0, DATEDIFF(dd, 0, GetDate()))