创建存储过程以比较日期列并更新状态列
Creating Stored Procedure to compare Date Column and update Status Column
我需要创建一个存储过程来将 EXPIRYDATE
列与 SYSTEMDATE
进行比较,如果它们匹配相等,则必须使用值 1 更新名为 MATCHSTATUS
的附加列,并且如果它们不匹配,则必须使用值 0 进行更新。
EXPIRYDATE
和 MATCHSTATUS
都出现在同一个 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
我需要创建一个存储过程来将 EXPIRYDATE
列与 SYSTEMDATE
进行比较,如果它们匹配相等,则必须使用值 1 更新名为 MATCHSTATUS
的附加列,并且如果它们不匹配,则必须使用值 0 进行更新。
EXPIRYDATE
和 MATCHSTATUS
都出现在同一个 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