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

时间:2015-02-02 10:10:17

标签: sql stored-procedures plsql cursor

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

EXPIRYDATEMATCHSTATUS都出现在同一张表中。

示例:

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

在此示例中,匹配状态列应通过将expirydate列与sysdate进行比较来更新,并且应由存储过程完成。

2 个答案:

答案 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