创建存储过程以比较日期列和更新状态列
Posted
技术标签:
【中文标题】创建存储过程以比较日期列和更新状态列【英文标题】:Creating Stored Procedure to compare Date Column and update Status Column 【发布时间】:2015-02-02 10:10:16 【问题描述】:我需要创建一个存储过程来比较 EXPIRYDATE
列与 SYSTEMDATE
并且如果它们匹配相等,则必须将名为 MATCHSTATUS
的附加列更新为值 1,如果它们不匹配则它必须用值 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
在本例中,匹配状态列应通过将过期日期列与 sysdate 进行比较来更新,并且应由存储过程完成。
【问题讨论】:
为什么需要存储过程? 那有什么问题? 您实际上还没有问过问题,您需要查询方面的帮助吗?您在如何创建存储过程方面需要帮助吗?你想知道存储过程是否是正确的使用方法吗?你只是在聊天吗? 【参考方案1】:代码可以是这样的
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
【讨论】:
【参考方案2】:这就是我认为你需要的 - 这假设 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
【讨论】:
以上是关于创建存储过程以比较日期列和更新状态列的主要内容,如果未能解决你的问题,请参考以下文章