根据一列中的值更新SQL Server 2008数据库表的列

时间:2013-03-17 19:10:16

标签: sql-server sql-server-2008

我需要实现试用许可证到期的功能。我创建了Membership表,其中包含以下列:

  • Registration_Date
  • Trial_Expiration_Date
  • Trial_Expired(值:Y / N)。

试用期为两周。

你能帮我写一个stored procedure来:

  1. 更新列Trial_Expiration_Date = Registration_Date + 14.注册成功后,我会在"Registration_Date"列中插入值。

  2. 如果今天和Trial_Expiration_Date的日期差异为0,则将字段"Trial_Expired"更新为'Y'

  3. 我正在使用SQL Server 2008数据库。

2 个答案:

答案 0 :(得分:0)

您可以在更新语句中使用CASE表达式

UPDATE Membership
SET    Trial_Expiration_Date = DATEADD(MM, 14, Registration_Date),
       Trial_Expired =
           CASE
             WHEN DATEADD(MM, 14, Registration_Date) < GETDATE() THEN 'Y'
             ELSE 'N'
           END
WHERE ... -- some condition here

答案 1 :(得分:0)

您可以为Trial_Expired创建计算字段。

CREATE TABLE Membership
    (
    Registration_Date DATE, 
    Trial_Expiration_Date DATE,
    Trial_Expired AS  CASE
             WHEN Trial_Expiration_Date < GETDATE() THEN 'Y'
             ELSE 'N'
           END
    )  ON [PRIMARY]