Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析
本文实例讲述了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法。分享给大家供大家参考,具体如下:
1.基本逻辑公式:
Select Rownum, 开始日期+Rownum-1 from dual connect by rownum< 结束日期-开始日期 +2;
2.查询2个日期所跨过的日期yyyy-mm-dd列表:
查询结果:
SQL代码(开始时间:2019-01-22,结束时间:2019-01-02):
Select Rownum, to_date('2019-01-02', 'yyyy-mm-dd')+Rownum-1 from dual connect by rownum< to_date('2019-01-22', 'yyyy-mm-dd')-to_date('2019-01-02', 'yyyy-mm-dd') +2;
3.查询2个日期所跨过的月份yyyy-mm列表:
查询结果:
SQL代码(开始时间:2020-03-15,结束时间:2019-01-02):
select ss.DAY_ID from ( SELECT TO_CHAR(TO_DATE('2019-01-02','YYYY-MM-DD')+ROWNUM-1 ,'YYYY-MM') DAY_ID from dual connect by rownum< to_date('2020-03-15', 'yyyy-mm-dd')-to_date('2019-01-02', 'yyyy-mm-dd') +2 ) ss GROUP BY DAY_ID ORDER BY DAY_ID
更多关于Oracle相关内容感兴趣的读者可查看本站专题:《Oracle常用函数汇总》、《Oracle日期与时间操作技巧总结》及《php+Oracle数据库程序设计技巧总结》
希望本文所述对大家Oracle数据库程序设计有所帮助。
相关推荐
-
oracle使用to_date查询一周的第一天日期
周使用IW方式计算,如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周 复制代码 代码如下: CREATE OR REPLACE FUNCTION f_week_to_date(a_week varchar2) RETURN CHAR IS v_first_date char(10); v_date_of_week number(1); BEGIN select to_char(to_dat
-
详解oracle 日期格式(总结)
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,"转换格式" ) 即把给定的日期按照"转换格式"转换. 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月:mon 用简写形式 比如11月或者nov :m
-
oracle日期时间型timestamp的深入理解
1.字符型转成timestamp 复制代码 代码如下: select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') from dual; 2.timestamp转成date型 复制代码 代码如下: select cast(to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') as date) ti
-
Oracle插入日期数据常见的2个问题和解决方法
1.无效的月份问题 最近在往数据库中插入时间时,Oracle报"无效的月份问题",具体SQL如下: 复制代码 代码如下: INSERT INTO TS_COUNT ( ID,CNAME, STARTTIME, ENDTIME,VALUE ) VALUES ( 1, 'John', '01/06/2013', '02/06/2013', 800 ); 报错:ORA-01843:无效的月份.这是由于日期格式不对造成的. 解决办法: 用select sysda
-
oracle查看当前日期是第几个星期的方法
系统当前时间是多少周,就是是今年的第几个星期 复制代码 代码如下: select to_char(sysdate,'ww') ,to_char(sysdate,'iw') from dual;select to_char(sysdate,'ddd') from dual;select TRUNC(SYSDATE,'MM') from dual;1) ww的算法为每年1月1日为第一周开始,date+6为每一周结尾例如:20050101为第一周的第一天,而第一周的最后一天为20050101+6=
-
Oracle查询优化日期运算实例详解
加减日.月.年 在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数. select a.hiredate 雇用日期, a.hiredate + 5 加5天, a.hiredate - 5 减5天, add_months(hiredate, 5) 加5个月, add_months(hiredate, -5) 减5个月, add_months(hiredate, 5 * 12) 加5年, add_months(hiredate, -5 * 12) 减5年 fro
-
oracle查询截至到当前日期月份所在年份的所有月份
下面通过一个查询语句给大家介绍oracle查询截至到当前日期月份所在年份的所有月份,具体代码如下所示: SELECT to_number(TO_CHAR(add_months(trunc(sysdate, 'yy'), ROWNUM - 1), 'MM')) as month FROM DUAL CONNECT BY ROWNUM <= (select months_between(trunc(sysdate, 'mm'), trunc(sysdate, 'yy')) + 1 from dual
-
Oracle 获取上周一到周末日期的查询sql语句
复制代码 代码如下: -- Oracle 取上周一到周末的sql -- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20130906','yyyymmdd'),'d') from dual; --结果:6 注释:2013.09.06是周五,为本周的第六天 select to_char(sysdate+(2-to_char(sysdate,'d'))-7,'yyyymmdd') from dual;---上周一 select to_char(sys
-
日常收集整理oracle trunc 函数处理日期格式(很实用)
本文给大家分享的oracle trunc 函数处理日期格式的相关知识,非常具有参考价值,具体请看下文说明吧. 复制代码 代码如下: select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; --显示当前时间 2011-12-29 16:24:34 复制代码 代码如下: select trunc(sysdate,'year') from dual; --截取到年(本年的第一天) 2011-1-1 复制代码 代码如下: select tr
-
Oracle中查询本月星期5的所有日期列表的语句
复制代码 代码如下: SELECT * FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM - 1 DAYS FROM (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= TRUNC(LAST_DAY(SYSDATE)) - TRUNC(SYSDATE, 'mm') + 1)) WHERE TO_CHAR(DAYS, 'd') = '6' 作者 scorpio3k
随机推荐
- JavaScript中判断函数是new还是()调用的区别说明
- linux启动流程详细介绍
- 4种java复制文件的方式
- Bootstrap学习笔记之css组件(3)
- Android 以任意比例裁剪图片代码分享
- MySQL中REPLACE INTO和INSERT INTO的区别分析
- Asp无组件上传进度条解决方案
- CSS 关于网页图片的属性
- 让焦点自动跳转
- Android打开相机和相册实例代码
- jQuery实现两款有动画功能的导航菜单代码
- jquery选择器的选择使用及性能介绍
- javascript中的 object 和 function小结
- JavaWeb实现文件上传与下载的方法
- 基于JavaScript实现百度搜索框效果
- C# 禁止应用程序多次启动的实例
- C#.NET学习笔记5 C#中的条件编译
- python实现百度语音识别api
- jQuery 改变P标签文本值方法
- python 批量解压压缩文件的实例代码