`

Oracle按指定日期生成连续的时间范围

阅读更多

比如现在有个表 记录着某个 sid 的开始 结束时间 大概有70w条数据
sid              start_date         end_date
1                2014/01/01       2014/07/24
3                2014/05/22       2014/06/05
8                2014/04/11       2014/04/16

我现在想生成一个将 start_date 和end_date展开的表 记录着每个周日,sid存在的记录:

生成后结果如下:

sid           snp_date
1              2014/01/05
1              2014/01/12
1              2014/01/19
......
3              2014/05/25
......

 

 

 

WITH t AS (
 SELECT 1 sid,DATE '2014-1-1' start_date,DATE '2014-7-24' end_date FROM DUAL
 UNION ALL SELECT 3,DATE '2013-1-1',DATE '2014-6-5' FROM DUAL
 UNION ALL SELECT 8,DATE '2014-4-11',DATE '2014-4-16' FROM DUAL
 UNION ALL SELECT 9,DATE '2014-10-18',DATE '2014-10-30' FROM DUAL
 UNION ALL SELECT 10,DATE '2014-10-18',DATE '2014-10-26' FROM DUAL
 UNION ALL SELECT 11,DATE '2014-10-19',DATE '2014-10-30' FROM DUAL
 UNION ALL SELECT 12,DATE '2014-10-19',DATE '2014-10-26' FROM DUAL
 UNION ALL SELECT 13,DATE '2014-10-19',DATE '2014-10-25' FROM DUAL
)
SELECT sid,start_date+7-to_char(start_date,'DAY','NLS_DATE_LANGUAGE=''numeric date language''')+(LEVEL-1)*7 dt
   FROM t
WHERE start_date+7-to_char(start_date,'DAY','NLS_DATE_LANGUAGE=''numeric date language''')+(LEVEL-1)*7 BETWEEN start_date AND end_date
CONNECT BY sid=PRIOR sid AND LEVEL<=(end_date-start_date)/7+1 AND PRIOR SYS_GUID() IS NOT NULL;

 

分享到:
评论

相关推荐

    oracle日期及时间格式

    在 Oracle 中,日期及时间格式可以通过使用 TO_CHAR 函数来实现,该函数可以将日期及时间转换为指定的格式。 Oracle 日期及时间格式的组成部分包括年、月、日、时、分、秒等,通过使用不同的格式符号,可以将日期及...

    oracle抓取指定时间段AWR报告实例说明 .docx

    ### Oracle抓取指定时间段AWR报告实例说明 #### 背景介绍 在日常的数据库运维工作中,我们经常需要对Oracle数据库的性能进行监控与优化。自动工作负载资料库(Automatic Workload Repository,简称AWR)是Oracle 10...

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

    例如,如果要查询过去10天的数据,可以构建一个递归查询来生成过去10天的日期范围,然后将其与原始数据关联。 总之,Oracle数据库提供了丰富的工具来处理时间相关的数据分析,包括灵活的日期函数、分组函数以及递归...

    从oracle数据库取出日期按格式显示

    本文将深入探讨如何从Oracle数据库中提取日期,并按照特定格式进行显示,这在数据分析、报表生成以及前端展示等场景下尤为关键。 ### Oracle数据库中的日期类型 Oracle数据库支持多种日期时间数据类型,其中最常用...

    Oracle自动导出脚本(WINDOWS下的,导出文件名自动加上日期和时间)

    ### Oracle自动导出脚本...通过以上详细说明,我们可以了解到如何在Windows环境下使用批处理脚本实现Oracle数据库的自动导出,并且生成的备份文件名包含了当前日期和时间信息,有助于后续的数据管理和恢复工作。

    SQL 更新指定范围的随机时间

    总结来说,生成指定范围内的时间主要依赖于SQL的日期时间函数和随机数生成函数。具体实现会根据你使用的数据库类型有所不同,但基本思路是相同的:先生成一个随机数,然后将这个随机数转化为对应时间范围内的偏移量...

    Oracle中如何用一条SQL快速生成10万条测试数据

    `dbms_random`是Oracle提供的包,包含了一系列随机数生成函数,`value`函数可以生成指定范围内的随机数。通过`trunc`函数,我们可以将其转换为整数。 #### 4. **随机字符串生成** `dbms_random.string('x',20)`...

    Oracle日期时间(DateTime)操作

    本文将深入解析Oracle日期时间操作的一些核心知识点,涵盖基本的日期时间函数使用、日期时间的格式化、以及一些高级的日期时间计算技巧。 ### 一、基础日期时间函数 #### 1. SYSDATE `SYSDATE`是Oracle系统中获取...

    Oracle 导出某时间段AWR与ASH性能报告操作日志

    - **开始时间和结束时间**:根据实际需求指定具体的开始和结束时间,以便于精确地获取所需时间段的性能数据。 ##### 2.4 导出ASH报告 ASH报告同样可以通过预定义的脚本生成,用于分析活跃会话的历史数据。 ``` ...

    Oracle的SQL实现日期的功能

    在Oracle数据库中,SQL语言是用于管理和操作数据的主要工具,特别是在处理日期和时间类型的数据时,Oracle提供了丰富的函数和操作符。这篇博文“Oracle的SQL实现日期的功能”将深入探讨如何利用Oracle SQL来处理日期...

    Oracle sql查询当前月的所有日期

    `LAST_DAY()`用于获取指定日期所在月份的最后一天,而`NEXT_DAY()`用于获取指定日期之后的下一个工作日或特定星期几的日期。 - **`TO_CHAR()`函数的格式模型**:`TO_CHAR()`函数可以接受第二个参数指定日期或数字的...

    Oracle中如何用一条SQL快速生成10万条测试数据.txt

    为了模拟真实场景中的日期时间数据,我们使用`SYSDATE`函数加上`ROWNUM`除以一天的秒数(24*3600)的方式,生成了一个随着时间递增的日期时间字段(`INC_DATETIME`)。这样可以确保每一条记录的时间都是递增的,并且...

    oracle各种日期函数

    除了以上介绍的功能外,Oracle还提供了许多其他的日期函数,比如用于计算两个日期之间间隔的 `MONTHS_BETWEEN` 函数,以及用于增加或减少指定日期单位的 `ADD_MONTHS` 和 `LAST_DAY` 等函数。这些函数在处理复杂的...

    oracle处理日期大全

    `NEXT_DAY`函数用于获取指定日期之后的下一个特定工作日。例如,获取下一个星期一: ```sql SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM DUAL; ``` 以上就是关于Oracle处理日期的相关知识点详解,希望能帮助读者更好...

    oracle日期时间函数大全.docx

    此外,Oracle还提供了其他日期时间函数,如`ADD_MONTHS`用于添加月份,`EXTRACT`用于提取日期时间对象的特定部分(如年、月、日等),`TRUNC`用于截取日期到指定的精度(如年、月、日或小时)。`SYSDATE`函数返回...

    Oracle的日期和时间详解.docx

    Oracle数据库中的日期和时间处理是数据库管理中的重要一环,特别是在数据分析和报表生成时。Oracle提供了多种处理日期和时间的内置函数和数据类型,其中DATE类型是最基础的日期时间类型。 DATE类型的内部存储机制并...

    oracle时间函数

    在Oracle数据库中,时间函数允许我们进行各种操作,如获取当前日期和时间、计算日期之间的差异、调整日期以及按特定周期对数据进行分组和分析。以下是一些常用的时间函数的详细介绍: 1. **Sysdate**:这个函数返回...

Global site tag (gtag.js) - Google Analytics