`
如月王子
  • 浏览: 8392 次
  • 性别: Icon_minigender_1
  • 来自: 江苏淮安
社区版块
存档分类

oracle 列出指定时间范围内的所有月份

阅读更多
今天在做一个系统的时候要到这么一个需求:

按月份统计出指定时间范围内的数据量,写好sql后执行发现当某个月份不存在数据时,这个月份在统计列表中就不会出现。所以要想办法将给出的时间范围内的所有月份列出来然后和之前的统计结果做一个左关联就OK了。

核心代码:

第一种方法:

SELECT TO_CHAR(
                add_months(to_date('2011-03', 'yyyy-mm'), ROWNUM - 1),
                'YYYY-MM'
              ) as yearMonth
  FROM DUAL
CONNECT BY ROWNUM <= (
                       select months_between(to_date('2012-07', 'yyyy-mm'),
                       to_date('2011-03', 'yyyy-mm')) from dual
                     )


第二种方法:

SELECT TO_CHAR(
                add_months(to_date('2011-03', 'yyyy-mm'), ROWNUM - 1),
                'YYYY-MM'
              ) as yearMonth
  FROM all_objects
where ROWNUM <= (
                       select months_between(to_date('2012-07', 'yyyy-mm'),
                       to_date('2011-03', 'yyyy-mm')) from dual
                     )
分享到:
评论

相关推荐

    Oracle数据库按时间进行分组统计数据的方法

    对于按时间段分组查询,可以创建一个包含多个时间点的子查询,然后用`JOIN`操作与原始数据表合并,实现特定时间段内的数据统计。例如,如果要查询过去10天的数据,可以构建一个递归查询来生成过去10天的日期范围,...

    oracle统计时间段内每一天的数据(推荐)

    1. **DBMS_RANDOM.VALUE**: 这是一个PL/SQL包中的函数,用于生成指定范围内的随机数。在示例中,`DBMS_RANDOM.VALUE(0, 1000)` 会返回0到1000之间的随机数。 2. **REGEXP_SUBSTR** 和 **REGEXP_COUNT**: 这两个函数...

    Oracle Sql基础 宝典系列1

    - **使用BETWEEN条件**:`BETWEEN` 用于选择某个范围内的值。 - **使用IN条件**:`IN` 用于列出可能的值集合。 - **使用LIKE条件**:`LIKE` 用于在WHERE子句中搜索列中的指定模式。 - **使用NULL/NOT NULL条件**:`...

    Oracle9i的init.ora参数中文说明

    值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY ...

    oracle数据库经典题目

    系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...

    oracle函数

    而在进行数据分析时,日期时间函数则可以帮助我们进行时间范围的筛选。 总之,Oracle函数是数据库操作的有力工具,它们提供了处理数据的灵活性和多样性。无论是初学者还是经验丰富的开发人员,都需要持续学习和熟练...

    oracle数据库

    - **雇用时间在特定日期范围内**:`SELECT FIRST_NAME, job_id, hire_date FROM employees WHERE hire_date BETWEEN '01-2月-98' AND '01-5月-98';` - Oracle支持使用日期格式字符串进行比较。 #### 多值条件 - **...

    oracle练习及答案

    找出部门10中所有经理(MANAGER),或者部门20中所有办事员(CLERK),或者既不是经理又不是办事员但其薪金大于或等于2000的所有雇员的详细信息 - **知识点**: 使用`OR`和`AND`连接条件。 - **SQL语句**: 查询符合条件...

    群读物第四期[Oracle Sql基础]

    - **使用BETWEEN条件:** `BETWEEN`用于指定一个范围内的值。 - **使用IN条件:** `IN`用于指定多个可能的值。 - **使用LIKE条件:** `LIKE`用于模式匹配。 - **使用NULL/NOT NULL条件:** `IS NULL`和`IS NOT NULL`...

    ORACLE 表数据写成TXT文本,CVS等格式存储过程

    - `v_month` 某一特定月份,用于限定查询范围。 ##### 2. 查询条件与文件初始化 ```sql BEGIN -- 确定查询月份 BEGIN SELECT MONTH INTO v_month FROM (SELECT DISTINCT MONTH FROM IMEINEWINFO) T WHERE NOT ...

    很详细全面的mysql日期比较

    例如,要找出表中某列`date_col`在过去30天内发生的记录,可以使用以下SQL语句: ```sql SELECT * FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) ; ``` 这里的`NOW()`函数返回当前的日期和时间,而`TO_...

    sql 笔试题总结版

    AND ...`:检查字段值是否在指定范围内或不在范围内。 - `IS [NOT] NULL`:检查字段值是否为空或不为空。 - `LIKE`:模式匹配,支持通配符(`%`代表任何字符序列,`_`代表单个字符)。 ### Oracle日期函数简介 - ...

Global site tag (gtag.js) - Google Analytics