首页 > 数据库技术 > 详细

oracle查询时根据查询的时间字段改变状态字段的值

时间:2019-06-05 14:09:08      阅读:281      评论:0      收藏:0      [点我收藏+]

        最近在开发的过程中遇到如下一个场景:oracle数据库商品表里面有商品的下线时间字段shelf_time  和状态字段 goods_statu,有个定时任务定时扫描商品表,如果当前商品状态为1(上线状态)且下线时间小于当前时间就改变商品的为0(下线状态),但定时任务不能保证实时性,所以在查询语句要加上这个逻辑判断,下面为解决方案

    select decode(

      (CASE WHEN
        (shelf_time < sysdate AND goods_status = ‘1‘ ) THEN -1
      END ),-1,0,goods_status) as goods_status

      from T_GOODS 

用到oracle 的 decode 和 CASE 函数结合完美把问题解决。

decode 函数的基本用法如下:

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

   该函数的含义如下:
   IF 条件=值1 THEN
    RETURN(翻译值1)
   ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
   ELSIF 条件=值n THEN
    RETURN(翻译值n)
   ELSE
    RETURN(缺省值)
   END IF

 CASE 函数的基本用法如下:

  case shelf_time 

  when shelf_time < sysdate  THEN  -1

  when shelf_time = sysdate  THEN  0

  else 1 end

 

  

oracle查询时根据查询的时间字段改变状态字段的值

原文:https://www.cnblogs.com/wllbdml/p/10978965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!