Oracle SQL使用connect by生成今天到指定时间的连续日期

Oracle实现方法

select sysdate + rownum-1
    from dual
   connect by rownum <= to_date('2029-04-01','yyyy-mm-dd')-to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')

结果:

实现思路:使用日期相减来获取指定指定时间段之内的天数,(切记不能使用字符串相减这样会获得一个无法预计的数据导致计算出来的日期不是想要的值)然后使用connect by函数将数值传入rownum中放入上边的select查询中来得出具体的日期。

20220303前来补充:在此处之前一直有疑惑为什么要+1今天再写时间维表的时候分析了一下。如果不+1他的开始是以1 - rownum的一个序列,所以当sysdate+1的时候会生成一明天为开始的日期维表如下

 同理如果是rownum+1那么取到的数据序列就是2 - rownum+1所以测试一下

 

 所以我们在要取的从今天开始的时间序列那么rownum之后应该减一,即生成从0 - rownum-1的序列。

后边有其他的理解再来补充

以下为引用其他的博文中的日期计算格式原文链接Oracle日期函数和转换函数_程序羊的博客-CSDN博客_oracle日期格式转换
日期函数用于处理date类型的数据,两个日期相减返回日期之间相差的天数。日期不允许做加法运算,无意义。
常见代表符号:yyyy 年,mm 月,dd 日,hh 小时,mi 分钟,ss 秒,day 星期
默认情况下日期格式是dd-mon-yy即12-3月-19
(1)sysdate: 该函数返回系统时间
(2)months_between(m,n)日期m和日期n相差多少月数
(3)add_months(d,n)在日期d上增加n个月数
(4)next_day(d, ‘星期*’) 指定日期d下一个星期*对应的日期
(5)last_day(d):返回指定日期d所在月份的最后一天
(6)extract(month from d)从日期d上提取月份数
(7)round(d,time)日期的四舍五入
(8)trunc(d,time)日期的截断

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值