我需要创建一个包含 CASE 语句的查询,该语句基本上说
CASE if getdate() > datedue by 31 days
then status = 'Blocked
END
有谁知道如何检查今天的日期是否比 25/10/2012 大 31 天?
编辑
Select co.OrderID, cu.FName + ' ' + cu.SName as 'Name',
cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address',
cu.PostCode,
ma.MaterialName as 'Item',
mi.Price as 'Item Price',
co.DateOrdered as 'Order Date',
pm.DueDate,
pm.Overdue,
HERE I NEED TO WRITE A CASE STATEMENT TO INSERT INTO A LOCKEDACCOUNT TABLE
so for example CASE WHEN DATEDIFF(dd, GETDATE(), pm.DueDate) >= 31 THEN INSERT INTO LOCKEDACCOUNT (id, status, datelocked, customerid) VALUES (.....)
END
from Customers cu
最佳答案
像这样:
SELECT
CASE
WHEN DATEDIFF(dd, GETDATE(), @duedate) >= 1 THEN 'blocked'
ELSE 'Not'
END AS Status;
SQL Fiddle Demo
注意:如果您没有指定
ELSE
子句,默认值为 NULL
.更新:您可以使用
CASE
插入表中像这样的表达:INSERT INTO Statuses VALUES
(CASE
WHEN DATEDIFF(dd, GETDATE(), CAST('20121025' AS DATE)) >= 31 THEN 'Blocked'
ELSE 'Not'
END);
Updated SQL Fiddle Demo
关于基于日期的 SQL Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493136/