创建存储过程以比较日期列并更新状态列

Creating Stored Procedure to compare Date Column and update Status Column

我需要创建一个存储过程来将 EXPIRYDATE 列与 SYSTEMDATE 进行比较,如果它们匹配相等,则必须使用值 1 更新名为 MATCHSTATUS 的附加列,并且如果它们不匹配,则必须使用值 0 进行更新。

EXPIRYDATEMATCHSTATUS 都出现在同一个 table 中。

示例:

username   password   expirydate   matchstatus
-----------------------------------------------------
abc        987        01-Feb-2015       1
xyz        678        10-Feb-2015       0
ghi        456        15-Jan-2015       0

在这个例子中,匹配状态列应该通过比较 expirydate 列和 sysdate 来更新,并且应该由存储过程完成。

代码可以是这样的

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

我认为这就是您需要的 - 这假设 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