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

简介: 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


相关文章
|
11月前
|
存储 Oracle 关系型数据库
Oracle 数据
Oracle 数据
|
11月前
|
Oracle 关系型数据库
ORACLE中null的排序问题
ORACLE中null的排序问题
|
Oracle 关系型数据库
Oracle操作
Oracle操作
54 0
|
Oracle 关系型数据库
Oracle操作1
Oracle操作1
60 0
|
Oracle 关系型数据库
oracle学习40-Oracle11g 不区分大小写设定
oracle学习40-Oracle11g 不区分大小写设定
105 0
oracle学习40-Oracle11g 不区分大小写设定
|
Oracle 关系型数据库 数据库
Oracle OMF参数
Oracle DBA 日常工作中,比较常见的就是添加表空间数据文件,如果不使用 OMF 参数,将会是一件麻烦的工作。
Oracle OMF参数
|
Oracle 关系型数据库