当前位置: 代码网 > it编程>数据库>Oracle > Oracle如何获取日期&天数

Oracle如何获取日期&天数

2026年08月28日 Oracle 我要评论
一.获取当年所有日期--select * from (select trunc(sysdate,'yyyy')+rownum-1 as pdays from dual connect by rownu

一.获取当年所有日期

--select * from (
select trunc(sysdate,'yyyy')+rownum-1 as pdays 
from dual connect by rownum<=add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy')
--)where pdays<trunc(sysdate)/*如此可查询从当年1号到昨天的日期*/

--去年所有日期
select add_months(trunc(sysdate,'yy'),-12)+rownum-1 as pdays 
from dual connect by rownum<=trunc(sysdate,'yyyy')-add_months(trunc(sysdate,'yy'),-12)

--明年所有日期
select add_months(trunc(sysdate,'yy'),12)+rownum-1 as pdays 
from dual connect by rownum<=add_months(trunc(sysdate,'yy'),24)-add_months(trunc(sysdate,'yy'),12)

--前年,去年,今年的所有日期
select add_months(trunc(sysdate,'yy'),-24)+rownum-1 as pdays 
from dual connect by rownum<=add_months(trunc(sysdate,'yy'),12)-add_months(trunc(sysdate,'yy'),-24)

--用年份来获取一年
-- 把2023替换为用户传过来的数值
where pdays>=trunc(to_date('2023/01/01','yyyy/mm/dd','yy')
and pdays<add_months(to_date('2023/01/01','yyyy/mm/dd',12)

自定义

--前年,去年,今年、明年的所有日期
select add_months(trunc(sysdate,'yy'),-24)+rownum-1 as pdays from dual connect by rownum<=add_months(trunc(sysdate,'yy'),24)-add_months(trunc(sysdate,'yy'),-24)

--自定义讲解
select add_months(trunc(sysdate,'yy'),-24)/*开始日期*/+rownum-1 as pdays 
from dual connect by rownum<=add_months(trunc(sysdate,'yy'),12)/*结束日期*/-add_months(trunc(sysdate,'yy'),-24)/*开始日期*/

二.获取当月所有日期

select trunc(sysdate,'mm')+rownum-1 as pdays 
from dual connect by rownum<=to_number(trunc(to_char(last_day(sysdate),'dd')))

三.获取当年所有月份

select to_char(pday,'mm')pdays from 
(select trunc(sysdate,'yyyy')+rownum-1 as pday 
from dual connect by rownum<=add_months(trunc(sysdate,'yyyy'),12/*替换此数可动态调整查询的月份*/)-trunc(sysdate,'yyyy'))
group by to_char(pday,'mm')order by pdays 

四.当月一号到昨天日期

select * from 
(select to_char(sysdate-rownum+1,'yyyy/mm/dd') pdays from dual connect by rownum<=31)
where pdays between (select to_char(trunc(sysdate,'mm'),'yyyy/mm/dd') from dual) 
and to_char(trunc(sysdate)-1,'yyyy/mm/dd') order by pdays 

五.今年月份&天数

select to_char(pday,'yyyy/mm')as pmonth,sum(num)num from 
(select 1 num,trunc(sysdate,'yyyy')+rownum-1 as pday 
from dual connect by rownum<=add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy'))
--where pday<trunc(sysdate,'mm') /*此处可限制具体月份*/
group by to_char(pday,'yyyy/mm') order  by to_char(pday,'yyyy/mm')

六.某月天数

select add_months(to_date(to_char(sysdate/*可替换为想要查询的月份*/,'yyyy/mm'),'yyyy/mm'),1)
-to_date(to_char(sysdate/*可替换为想要查询的月份,于前参数一致*/,'yyyy/mm'),'yyyy/mm')m_num 
from dual

七.当年天数

select add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy') y_num
from dual

八.当月天数

select to_number(to_char(last_day(trunc(sysdate)),'dd'))m_num 
from dual

九.当年周数

select pw from(select to_char(pdays,'iyyy-iw')pw from(select trunc(sysdate,'yyyy')+rownum-1 as pdays 
from dual connect by rownum<=add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy')))group by pw order by pw

十.当前第几周,某个日期为第几周

select to_char(sysdate,'iyyy-iw')as pw from dual
select to_char(date '2026-08-20','iyyy-iw')as pw from dual

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com