Oracle获取日期查询处理&近一年的所有月份&一个月的全部日期&当前年至今的所有月份

一个月的全部日期

1
2
3
SELECT to_char(TRUNC(to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-MM-dd'), 'MM') + ROWNUM - 1, 'yyyy-MM-dd') as day
FROM dual
connect by  to_char(last_day(to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-MM-dd')), 'dd') >= ROWNUM

  

 

 

查询近一年的所有月份

1
2
3
select to_char(add_months(sysdate, -t.rn), 'yyyy-mm')
from dual a, (select rownum - 1 rn from dual connect by rownum <= 12) t
 order by to_char(add_months(sysdate, -t.rn), 'yyyy-mm')

  或者

1
select to_char(add_months(sysdate,-ROWNUM+1), 'yyyy-MM') day from dual  connect by  12 >= ROWNUM

  

 

 

查询当前年至今的所有月份

1
2
3
4
select to_char(add_months(sysdate, -t.rn), 'yyyy-mm')
from dual a, (select rownum - 1 rn from dual connect by rownum <= 12) t
 where to_char(add_months(sysdate, -t.rn), 'yyyy') =to_char(sysdate, 'yyyy')
 order by to_char(add_months(sysdate, -t.rn), 'yyyy-mm')

  

 

 

获取当前时间90天内连续日期

1
2
select to_char(add_days(sysdate,-ROWNUM+1), 'yyyy-MM-dd') day
from dual  connect by  90 >= ROWNUM

  

查询当前时间

1
2
3
4
5
6
查询当前时间
select sysdate from dual;
 
查询当前时间并格式化日期
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual;

  

日期格式化

yyyy 可换成其他格式:MM、dd、Q、iw
MM:月 ---------------dd:日
Q:季度 ---------------- iw:周

select to_char(sysdate, 'yyyy' ) from dual; --年


当前时间减少日期

MINUTE 可替换成其他字段:hour 、day 、month 、year

1分钟内的数据
select sysdate,sysdate - interval '1' MINUTE from dual;
1
2
查询这个月的第一天/最后一天
第一天
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1 FROM DUAL;

最后一天
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, 0)) FROM DUAL;

查询连续日期的统计个数

一组数据,根据MN来统计连续日期的天数

 

 统计结果应该为:4、2、2、2、5

 

 利用开窗思想以及辅助列的方式新增出一列来帮我们记录哪些日期才是连续的

1
2
3
4
5
6
7
8
9
10
11
--去重MN,分别取出连续日期的开始时间和结束时间,统计个数
 select distinct mn,min(intime) ksrq,max(intime) jsrq,count(*) cs from
    (
        SELECT mn,intime,XH,trunc(intime)-xh as  rq2 --连续的日期得出的辅助列是相同
            FROM
            (   -- 使用PARTITION BY 来帮助生成序号
            SELECT mn,intime,ROW_NUMBER()OVER(PARTITION BY mn ORDER BY intime) XH
            FROM YQHS.QY_ALARMINFO --表
            where intime <sysdate and intime >sysdate-11 --相应的条件
            )
    )group by mn,rq2;--根据MN编号和辅助列统计

  输出结果:和预想的结果一致

 

 原文地址:https://blog.csdn.net/weixin_41451078/article/details/112919837

posted @   红尘沙漏  阅读(2828)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2022-03-03 java中定时器模拟数据库备份
2021-03-03 根据指定日期加天数算出到期日期
点击右上角即可分享
微信分享提示