oracle,获取每日24*60,所有分钟数

前言:

        为规范用户的时间录入,因此我们采用下拉的方式,让用户选择需要的时间,因此我们需要将一天24小时的时间拆分为类似00:00,00:01...23:00,23:01,23:59。因此我们需要生成24*60=1440行的下拉复选值。具体效果如下图所示。

思路

        1、又是connect by

        哈哈哈,从数据的结构来看,又是树状的数据,因此最先想到的是使用connect by,类似我们用connect by 做万年历也是这样的。具体我们可以下面这篇关于connect by详细文章介绍。

oracle connect by很强,但是要慎用,不然有你哭的时候_他们叫我技术总监的博客-CSDN博客

SELECT '年' lx, TO_CHAR(ADD_MONTHS(SYSDATE, (4 - ROWNUM)*12), 'YYYY') YEAR_LIST 
FROM DUAL CONNECT BY ROWNUM <= 5 --获取近5年的年份

            2、代码

SELECT to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD') + (ROWNUM - 1) / (24 * 60),'hh24:mi') tm 
FROM DUAL CONNECT BY ROWNUM <= 24*60
--获取一天所有分钟数

        3、效果

         4、代码阐述

        如上图所示,我们一共获得了1440行数据,对应数据从00:00开始至23:59分钟结束。其中的1440=24*60即CONNECT BY ROWNUM <= 24*60来限制生成的结果只有1440行。

        其中 to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD') + (ROWNUM - 1) / (24 * 60),'hh24:mi')的意思是,获取任一一个日期,如2023年3月23日中的分钟数,其实每天都是24小时。因此随便一个日期都可。ROWNUM从1开始至1440结束,因此当ROWNUM=1时,此时to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD') + (ROWNUM - 1) / (24 * 60),'hh24:mi')=to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD'),'hh24:mi')=00:00

同理等ROWNUM=2时,to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD') + (ROWNUM - 1) / (24 * 60),'hh24:mi')=00:01

        .............

同理等ROWNUM=1440时,to_char(TO_DATE('2023-03-23', 'YYYY-MM-DD') + (ROWNUM - 1) / (24 * 60),'hh24:mi')=23:59

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他们叫我技术总监

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值