2013-03-17 129 views
0

我需要实施试用版许可证到期功能。我已创建Membership表具有以下的列:根据一列中的值更新SQL Server 2008数据库表的列数

  • 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'

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

回答

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 
+0

Afaik您必须使用'DateAdd'函数将日期添加到日期。此外,“Trial_expired”列不会自动更新。 – alzaimar 2013-03-17 19:29:02

+0

@alzaimar你是对的,先生。 – 2013-03-17 19:44:41

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] 
相关问题