Oracle:Decode在时间范围中的使用

做查询的时候需要下一个sql,需要select test_time出来,如果test_Time的HH24:Mi:SS在7:00:00和19:00:00返回白班,否则返回夜班

  select case when to_number(to_char(test_time, 'hh24')) between 7 and 19 then '白班'

  else '夜班'

  end

  from (select to_date('2008-12-5 10:00:00', 'yyyy-mm-dd hh24:mi:ss') test_time

  from dual

  ) t;

  SQL> SELECT MYDATE,

  2         DECODE(SIGN(MYDATE-TO_DATE(TO_CHAR(MYDATE,'YYYY-MM-DD')||'07:00:00','YYYY-MM-DD HH24:MI:SS'))

  3               *SIGN(TO_DATE(TO_CHAR(MYDATE,'YYYY-MM-DD')||'19:00:00','YYYY-MM-DD HH24:MI:SS')-MYDATE),

  4               1,'Morning Shift',

  5               0,'Morning Shift',

  6               'Afternoon Shift') CLASS_TYPE

  7    FROM TABLE_NAME TT;

  MYDATE                                             CLASS_TYPE

  -------------------------------------------------- ---------------

  2008-12-3 6:30:55                                  Afternoon Shift

  2008-12-3 10:42:33                                 Morning Shift

  2008-12-3 19:22:36                                 Afternoon Shift

  2008-12-3 19:00:00                                 Morning Shift

  2008-12-4 7:00:00                                  Morning Shift

posted on 2014-05-14 10:21  荣锋亮  阅读(1299)  评论(0)    收藏  举报

导航