我想通过添加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个月
答案 0 :(得分:8)
要将类型DATETIME
或DATE
的现有值增加一个月,请使用:
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