sql构造时间列表

这篇博客展示了如何使用Oracle SQL查询语句生成特定时间范围内的每小时、每天、每周的数据列表,以及如何进行时间的向前和向后推算。内容涵盖了DATEDIFF函数、CONNECT BY级别递归和DATEADD等时间操作,对于数据库查询和时间序列分析具有参考价值。
摘要由CSDN通过智能技术生成

1、获取某时间开始24小时每小时列表数据
 SELECT TO_DATE('2021-05-06','YYYY-MM-DD HH24:MI:SS')-(LEVEL-1.0)/24 AS DAT
        FROM DUAL CONNECT BY LEVEL <> 24

2、获取某时间开始,往后推若干天时间列表
 SELECT level,TO_DATE('2021-05-06','YYYY-MM-DD')- LEVEL + 1 AS DAT
        FROM DUAL CONNECT BY LEVEL <= DATEDIFF(day,'2021-05-01','2021-05-06') + 1    

3、当前时间往前往前推7天时间列表
 SELECT level,TO_DATE(now(),'YYYY-MM-DD HH24:MI:SS')- LEVEL + 1 AS DAT
        FROM DUAL CONNECT BY LEVEL <= 7  

4、当前时间往后推7天时间列表
 SELECT level,TO_DATE(now(),'YYYY-MM-DD HH24:MI:SS')+ LEVEL -1 AS DAT
        FROM DUAL CONNECT BY LEVEL <= 7 

5、查询某时间段和某表数据笛卡尔积

select
        b.dat,
        a.*
from
        (
                select
                        to_date(CURDATE(), 'YYYY-MM-DD') - level + 1 as dat
                from
                        dual connect by level <= 5   ---当前时间 往前5天
        )
        b cross
join
        (
                select AREA,area_name from T_AREA_INFO where PARENT_CODE = '620000'
        )
        a

当前时间往前推10个月
select level,DATEADD(month,-level,getdate())
from
DUAL CONNECT BY LEVEL <= 10

  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值