Подтвердить что ты не робот

Как вы тестируете, если что-то старше 3 месяцев?

У меня возникли проблемы с выбором строк моей таблицы, у которых есть дата за 3 месяца до сегодняшнего дня. Я попытался использовать DATE(NOW() - INTERVAL 3 MONTH) в моей статье where, но не повезло. Как проверить SQL Server, если элемент старше 3 месяцев?

  UPDATE[TCTdb].[dbo].[Stock]
     SET[Warehouse] = 'old'
   WHERE [ManufacturedDate] <= DATE(NOW() - INTERVAL 3 MONTH)
4b9b3361

Ответ 1

Ваш синтаксис кажется неправильным.

Это должно быть

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

Ответ 2

Используйте dateadd().

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

Я предлагаю dateadd() над datediff() потому что я думаю, что вы получите неожиданные результаты, используя datediff() с month datepart.

Учтите, что следующие утверждения возвращают 3:

select datediff(month, '1/1/2011','4/1/2011')
select datediff(month, '1/1/2011','4/30/2011')

Либо работает в этом конкретном случае... Просто помните об этом.

Ответ 4

попробуйте DATEDIFF:

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

        else 'no'

    end

Надеюсь, что это поможет,

Джон