我需要创建一个存储过程来将EXPIRYDATE
列与SYSTEMDATE
进行比较,如果它们匹配相等,则必须使用值1更新名为MATCHSTATUS
的其他列,如果它们是如果不匹配,则必须使用值0进行更新。
EXPIRYDATE
和MATCHSTATUS
都出现在同一张表中。
示例:
username password expirydate matchstatus
-----------------------------------------------------
abc 987 01-Feb-2015 1
xyz 678 10-Feb-2015 0
ghi 456 15-Jan-2015 0
在此示例中,匹配状态列应通过将expirydate列与sysdate进行比较来更新,并且应由存储过程完成。
答案 0 :(得分:0)
代码可以是那样的
Declare @crntdt NVARCHAR(20)
Declare @mydt NVARCHAR(20)
Select
@crntdt = REPLACE(rtrim(ltrim(CONVERT(CHAR(15), getdate(), 106))),' ',' - ')
--select @crntdt
select @mydt=expirydate from your_table
if @crntdt=@mydt
begin
update your_table set matchstatus=1 where expirydate=@mydt
end
答案 1 :(得分:0)
这就是我想要的 - 这假设expirtydate是一个日期,如果它是varchar,你需要把它作为日期投射:
CREATE PROCEDURE sp_name
as
Begin
Update tbl
set matchstatus = case when expirydate = cast(GETDATE() as date) then 1 else 0 end
END