oracle

哪位大佬能帮我写个sql  获取当前系统时间判断属于早上8点到晚上8点 查询条件就为早8-晚8  如果判断为 晚8-早  查询条件就是晚8-早8

获取的时间为8-20点范围的就 按时间查8点到20点的

获取的时间为20-8点范文的就 按时间查20点到8点这样的

a475547619 发布于 2021-11-8 16:04 (编辑于 2021-11-8 16:46)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
梦燃Lv6初级互助
发布于2021-11-8 16:13(编辑于 2021-11-8 16:18)

select case when to_char(sysdate, 'HH24:mi:ss') >= '08:00:00' and to_char(sysdate, 'HH24:mi:ss') <= '20:00:00' then '早8-晚8' else '晚8-早8' end from dual

最佳回答
0
吾姓独孤Lv6高级互助
发布于2021-11-8 16:19

DATE_TIME 是你表里的时间字段

SELECT

    *

FROM

    TABLE1

WHERE

    1 = 1

    AND ${IF(AND(LEFT(RIGHT(NOW(),8),2)>="08",LEFT(RIGHT(NOW(),8),2)<"20"),

            "SUBSTR(TO_CHAR(DATE_TIME,'YYYY-MM-DD HH24:MI:SS'),12,2) >= '08' AND SUBSTR(TO_CHAR(DATE_TIME,'YYYY-MM-DD HH24:MI:SS'),12,2) < '20'",

            "SUBSTR(TO_CHAR(DATE_TIME,'YYYY-MM-DD HH24:MI:SS'),12,2) < '08' OR SUBSTR(TO_CHAR(DATE_TIME,'YYYY-MM-DD HH24:MI:SS'),12,2) >= '20'"

        )}

最佳回答
0
yzm119464Lv3初级互助
发布于2021-11-8 18:22

select * from dual 

where 

(

--8点之后并且20点之前

substr(to_char(sysdate,'yyyymmdd hh24:mi:ss'),10,2) >= 8 and substr(to_char(sysdate,'yyyymmdd hh24:mi:ss'),10,2) <= 20 

--v_date筛选8-20

      and v_data between to_date(to_char(sysdate,'yyyymmdd')||'08:00:00','yyyymmdd hh24:mi:ss') and to_date(to_char(sysdate,'yyyymmdd')||'20:00:00','yyyymmdd hh24:mi:ss') 

)

or

 (

--20点之后并且8点之前

substr(to_char(sysdate,'yyyymmdd hh24:mi:ss'),10,2) > 20 and substr(to_char(sysdate,'yyyymmdd hh24:mi:ss'),10,2) < 8

--v_date筛选20点之后到8点之前

      and v_data between to_date(to_char(sysdate,'yyyymmdd')||'20:00:01','yyyymmdd hh24:mi:ss') and to_date(to_char(sysdate,'yyyymmdd')||'07:59:59','yyyymmdd hh24:mi:ss')

 )

  • 4关注人数
  • 332浏览人数
  • 最后回答于:2021-11-8 18:22
    请选择关闭问题的原因
    确定 取消
    返回顶部