【问题标题】:Creating Stored Procedure to compare Date Column and update Status Column创建存储过程以比较日期列和更新状态列
【发布时间】:2015-02-02 10:10:16
【问题描述】:

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

EXPIRYDATEMATCHSTATUS 都存在于同一个表中。

例子:

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

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

【问题讨论】:

  • 为什么需要存储过程?
  • 那有什么问题?
  • 您实际上还没有问过问题,您需要查询方面的帮助吗?您在如何创建存储过程方面需要帮助吗?你想知道存储过程是否是正确的使用方法吗?你只是在聊天吗?

标签: sql stored-procedures plsql cursor


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2019-05-19
      相关资源
      最近更新 更多