自动更新取决于日期的布尔值 属性 (MSSQL)

Automatically update boolean property which is depend of date (MSSQL)

我正在搜索自动更新 table 中的布尔列的解决方案。该字段是“WarrantyActive”。我还有另一列“WarrantyDate”-> 保修期。 我想创建函数:if (WarrantyDate < DateTime.Now) -> 将 WarrantyActive 更改为 false.

    public bool WarrantyIsActive { get; set; }

    public DateTime WarrantyDate { get; set; }

当我使用 table 的 HttpGet 时,我应该在代码中执行此操作并检查吗?或者在 MSSQL 中有没有更好的方法自动检查这个值?

您可以 check/set 直接在 属性 上,如下所示:

public bool WarrantyIsActive => WarrantyDate > DateTime.Now;

isWarrantyActive 应该是计算的 属性 或计算的列。

计算得出属性:

public class Product
{
    public DateTime WarrantyDate { get; set; }
    public bool IsWarrantyActive => WarrantyDate >= DateTime.Now;
}

作为 table 中的计算列:

CREATE TABLE products 
(
    product_id int NOT NULL PRIMARY KEY,
    warranty_date datetime NOT NULL,
    is_warranty_active AS (CAST(CASE WHEN warranty_date >= GETDATE() THEN 1 ELSE 0 END AS bit))
)

或者在查询中计算:

SELECT 
    product_id, warranty_date, 
    (CAST(CASE WHEN warranty_date >= GETDATE() THEN 1 ELSE 0 END AS bit)) AS is_warranty_active
FROM 
    products