Я не совсем уверен, говорите ли вы, что первое обновление работает или нет, или это была только проверка даты заказа, которая вызывала проблемы, поэтому я просто рассмотрю дату заказа.
Если вы хотите, чтобы записи были старше 60 дней ...
and Orders.OrderDate < dateadd(day, -60, getdate())
Однако, поскольку getdate () включает время, вы, вероятно, захотите принять это во внимание ...
and Orders.OrderDate < dateadd(day, -60, convert(char(10), getdate(), 101))
Функция преобразования в этом случае удаляет временную часть даты.
Кроме того, если ваши статусы заказа должны быть строками, они должны быть заключены в кавычки, поэтому ваш полный запрос будет выглядеть так:
UPDATE Orders
SET Orders.OrderStatus = 'Cancelled'
WHERE Orders.OrderStatus in ('New','Pending','Processing','Payment Declined','Awaiting Payment','See Line Items','See Order Notes','Backordered')
AND Orders.Total_Payment_Received = 0
AND Orders.OrderDate < dateadd(day, -60, convert(char(10), getdate(), 101))
Несколько советов по запуску обновлений. ВСЕГДА запускайте сначала SELECT
с тем же предложением WHERE
, чтобы вы могли определить, какие строки будут затронуты. Это избавит вас от боли. Если слишком много строк, которые необходимо обновить, используйте SELECT TOP 5000
или что-то еще, чтобы вы могли хотя бы проверить некоторые из них. Всегда точно знайте, что вы собираетесь обновить, прежде чем обновлять его.