月增量查询

时间:2011-12-29 08:12:39

标签: sql sql-server-2005

我想通过添加1个月来更新我的数据库中的月份,但我不知道如何在我的以下存储过程查询中添加月份我不太喜欢sql请检查它

ALTER PROCEDURE [dbo].[ChangePassword] 

@password varchar(20),
@epassword varchar(50),
@username char(32)
AS
UPDATE AccountRole 
    SET Password = @password, 
        EPassword = @epassword 
    WHERE UserName = @username

    UPDATE AccountRole 
    SET ExpiryDate="?"

当查询执行时,我需要写什么来增加1个月

3 个答案:

答案 0 :(得分:8)

要将类型DATETIMEDATE的现有值增加一个月,请使用:

UPDATE AccountRole 
SET ExpiryDate = DATEADD(MONTH, 1, ExpiryDate)

正如Oleg正确地指出的那样,假设您的两个UPDATE语句具有相同的WHERE条件(WHERE UserName = @username),那么您可以在一个UPDATE中执行此操作:

UPDATE dbo.AccountRole 
SET Password = @password, 
    EPassword = @epassword,
    ExpiryDate = DATEADD(MONTH, 1, ExpiryDate)
WHERE UserName = @username

答案 1 :(得分:2)

您可以使用dateadd

update AccountRole set ExpiryDate=dateadd(month, 1, ExpiryDate)
where ...

答案 2 :(得分:1)

试试这个,无需使用第二次更新

ALTER PROCEDURE [dbo].[ChangePassword] 

@password varchar(20),
@epassword varchar(50),
@username char(32)
AS
UPDATE AccountRole 
    SET Password = @password, 
        EPassword = @epassword,
        ExpiryDate=DATEADD(MONTH, 1, GETDATE()) 
    WHERE UserName = @username