您的位置:首页 > 数据库 > Oracle

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

2014-05-14 10:21 531 查看
做查询的时候需要下一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: