如果测试是否超过3个月,您如何测试?

Eon*_*Eon 17 sql t-sql sql-server

我一直在努力选择我的桌子的行,这些行的日期是今天之前的3个月.我尝试DATE(NOW() - INTERVAL 3 MONTH)在我的where子句中使用,但没有运气.如果项目超过3个月,我如何签入SQL Server?

  UPDATE[TCTdb].[dbo].[Stock]
     SET[Warehouse] = 'old'
   WHERE [ManufacturedDate] <= DATE(NOW() - INTERVAL 3 MONTH)
Run Code Online (Sandbox Code Playgroud)

Cod*_*ian 42

你的语法似乎是错误的.

那应该是

UPDATE[TCTdb].[dbo].[Stock]
    SET[Warehouse] = 'old'
WHERE [ManufacturedDate] <= DATEADD(mm, -3, GETDATE())
Run Code Online (Sandbox Code Playgroud)

  • ++ 1此格式也适用于您在ManufacturedDate字段上可能具有的任何索引 (3认同)

I a*_*ica 8

使用dateadd().

update [TCTdb].[dbo].[Stock]
set [WareHouse] = 'old'
where [ManufacturedDate] < dateadd(month,-3,getdate())
Run Code Online (Sandbox Code Playgroud)

我建议dateadd()datediff(),因为我觉得你会得到意想不到的使用效果datediff()month日期部分.

考虑以下语句都返回3:

select datediff(month, '1/1/2011','4/1/2011')
select datediff(month, '1/1/2011','4/30/2011')
Run Code Online (Sandbox Code Playgroud)

要么在这种特殊情况下工作......请记住这种行为.