Sql 你如何测试某物是否超过3个月?

Sql 你如何测试某物是否超过3个月?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在选择日期比今天早3个月的表的行时遇到了一些麻烦。我尝试在where子句中使用DATE(NOW()-INTERVAL 3个月),但没有成功。如果一个项目超过3个月,如何签入SQL Server UPDATE[TCTdb].[dbo].[Stock] SET[Warehouse] = 'old' WHERE [ManufacturedDate] <= DATE(NOW() - INTERVAL 3 MONTH) 更新[TCTdb].[dbo].[Stock] 设置[仓

我在选择日期比今天早3个月的表的行时遇到了一些麻烦。我尝试在where子句中使用
DATE(NOW()-INTERVAL 3个月)
,但没有成功。如果一个项目超过3个月,如何签入SQL Server

  UPDATE[TCTdb].[dbo].[Stock]
     SET[Warehouse] = 'old'
   WHERE [ManufacturedDate] <= DATE(NOW() - INTERVAL 3 MONTH)
更新[TCTdb].[dbo].[Stock]
设置[仓库]=“旧的”

其中[ManufacturedDate]DATEDIFF函数应该对您有所帮助:

试用DATEDIFF:

SELECT 
    case 
        when DATEDIFF(month, '2005-12-31' , '2006-04-01 ') > 3
        then 'yes'

        else 'no'

    end
希望有帮助


John

您的语法似乎有误

那应该是

UPDATE[TCTdb].[dbo].[Stock]
    SET[Warehouse] = 'old'
WHERE [ManufacturedDate] <= DATEADD(mm, -3, GETDATE())
更新[TCTdb].[dbo].[Stock]
设置[仓库]=“旧的”
其中[ManufacturedDate]使用


这两种方法都适用于这种特殊情况。。。记住这种行为。

是实际的几个月还是90天?是5/3还是更大,对吧?肯定是3个月。非90天++1此格式还可以与ManufacturedDate fieldDATEDIFF上的任何索引一起使用。DateDiff是错误的。1月1日到4月30日是3个月的差异,例如-1-1日期差异是错误的。1月1日到4月30日是3个月的差异,例如@marc_s:事实上,这是错误的,他寻找的是3个月,而不是90天。1月1日至4月30日为3个月。你说是多少个月?@hspain:usign DATEADD加上-3个月不是90天。我减去3个日历月。如果我想在4月30日购买3个月以上的产品,我希望在1月30日之前停止销售。业务用户也会这样认为:+1链接到MSDN上的DATEADD文章,这样我就可以找出除“month”之外的其他值对第一个参数有效。
UPDATE[TCTdb].[dbo].[Stock]
    SET[Warehouse] = 'old'
WHERE [ManufacturedDate] <= DATEADD(mm, -3, GETDATE())
update [TCTdb].[dbo].[Stock]
set [WareHouse] = 'old'
where [ManufacturedDate] < dateadd(month,-3,getdate())
select datediff(month, '1/1/2011','4/1/2011')
select datediff(month, '1/1/2011','4/30/2011')