这个SQL语句怎么写

yzf86211861 2019-08-06 04:34:37

序列 日期
1. 2019-08-02 07:29:59
2. 2019-08-02 07:30:01
3. 2019-08-03 07:29:59
4. 2019-08-03 07:30:01
5 2019-08-03 12:30:01


想得到
1 2019-08-01
2 2019-08-02
3 2019-08-02
4 2019-08-03
5 2019-08-03

因为是每天 7点30 换班
这个语句要处理下.这个0点到7点30的 算上一天的.
...全文
201 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
卜塔 2019-08-06
  • 打赏
  • 举报
回复
select 序号,
case
when to_char(日期,'hh24:mi:ss') <= '07:30:00' then to_char(日期-1,'yyyy-mm-dd')
else to_char(日期,'yyyy-mm-dd')
end as 实际日期
from 表名;
minsic78 2019-08-06
  • 打赏
  • 举报
回复
大致就是这个意思:
WITH aa
     AS (SELECT TO_DATE ('2019-08-02 07:29:59', 'yyyy-mm-dd hh24:mi:ss') rq
           FROM DUAL
         UNION ALL
         SELECT TO_DATE ('2019-08-02 07:30:01', 'yyyy-mm-dd hh24:mi:ss') rq
           FROM DUAL)
SELECT CASE
          WHEN TO_CHAR (rq, 'hh24miss') < '073000'
          THEN
             TRUNC (rq - 1)
          ELSE
             TRUNC (rq)
       END
          new_rq
  FROM aa

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧