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
利用开窗思想以及辅助列的方式新增出一列来帮我们记录哪些日期才是连续的
1234567891011--去重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
分类:
常见sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2022-03-03 java中定时器模拟数据库备份
2021-03-03 根据指定日期加天数算出到期日期