[编辑,因为目标似乎不清楚]
考虑以下数据(不一定是表格):
| currentDate (day of query) | expiryDate |isOK |
|----------------------------|-------------|-----|
| 25.01.2018 |26.01.2018 |True |
| 24.01.2018 |23.01.2018 |False|
以上数据/条目的移植:
在18.01.2018,我们检查机器是否仍然正常。理想情况下,数据库应将“isOk”字段简单地设置为“True”。 如果在24.01.2018我们检查“isOk”,它应该由DB设置为False。
总体目标是:
当然,这也可以通过编程方式实现:
此外,如果有另一个计算列显示到期前剩余天数,可能会更好,更新方式与“isOk”列相同。
这可行吗?如果是,SQL代码将非常感激。谢谢!
答案 0 :(得分:0)
如果您希望根据todayDate和EndDate列中的值更改来更改isOk列,请根据其他2列将isOk归档为计算字段
假设如果在今天的1周内EndDate,则希望isOK字段为True。你可以试试这个
CREATE TABLE MyTable
(
TodayDate DATE,
EndDate DATE,
IsOk AS (CASE WHEN DATEDIFF(DD,EndDate,TodayDate) BETWEEN 0 AND 7 THEN 'True' ELSE 'False' END)
)
INSERT INTO MyTable(TodayDate,EndDate)
SELECT GETDATE(),GETDATE()+10
UNION
SELECT GETDATE(),GETDATE()-10
UNION
SELECT GETDATE(),GETDATE()+7
UNION
SELECT GETDATE(),GETDATE()-7
SELECT
*
FROM MyTable
我的结果