Sql 创建存储过程以比较日期列和更新状态列
我需要创建一个存储过程,用于比较Sql 创建存储过程以比较日期列和更新状态列,sql,stored-procedures,plsql,cursor,Sql,Stored Procedures,Plsql,Cursor,我需要创建一个存储过程,用于比较EXPIRYDATE列与SYSTEMDATE列,如果它们匹配相等,则必须使用值1更新另一个名为MATCHSTATUS的列,如果它们不匹配,则必须使用值0更新 EXPIRYDATE和MATCHSTATUS都存在于同一个表中 例如: username password expirydate matchstatus ----------------------------------------------------- abc 987
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来更新match status列,并且应该通过存储过程来完成
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
为什么需要存储过程?那么问题出在哪里?您实际上还没有问过问题,需要查询帮助吗?在如何创建存储过程方面需要帮助吗?您想知道存储过程是否是正确使用的方法吗?你只是在聊天吗?