【oracle】oracle 常用日期操作

1. 简单查询

说明 查询 sql
日期格式化 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
本月第一天 select to_char(trunc(sysdate, 'mm'),'yyyy-mm-dd') from dual;
本月最后一天 select to_char(last_day(trunc(sysdate)),'yyyy-mm-dd') from dual;
上月第一天 select to_char(last_day(add_months(trunc(sysdate),-2))+1,'yyyy-mm-dd') from dual;
上月最后一天 select to_char(last_day(add_months(trunc(sysdate),-1)),'yyyy-mm-dd') from dual;
下月第一天 SELECT to_char(last_day(SYSDATE) + 1,'yyyy-mm-dd') FROM dual;
下月最后一天 select to_char(last_day(add_months(trunc(sysdate),1)),'yyyy-mm-dd') from dual;

2. 查询两个日期范围内所有日期列表

sql 复制代码
WITH xrange AS ( SELECT 
			to_date( '2025-05-03', 'yyyy-mm-dd' ) AS start_date, 
			to_date( '2025-06-07', 'yyyy-mm-dd' ) AS end_date 
			FROM dual ) 
SELECT
	t.GEN_DATE AS start_date,-- 开始时间
	t.GEN_DATE AS end_date -- 结束时间
FROM
	( SELECT to_char( start_date + LEVEL - 1, 'YYYYMMDD' ) AS gen_date FROM xrange CONNECT BY start_date + LEVEL - 1 <= end_date ) t;

3. 查询两个月份范围内所有月份列表

sql 复制代码
WITH xrange AS ( SELECT 
	to_date( '2024-01' || '-01', 'yyyy-mm-dd' ) AS start_date, 
	to_date( '2025-03' || '-01', 'yyyy-mm-dd' ) AS end_date FROM dual ) 
SELECT
	t.GEN_DATE AS start_month,-- 开始时间
	t.GEN_DATE AS end_month -- 结束时间
FROM
	(
	SELECT
		to_char( ADD_MONTHS( start_date, LEVEL - 1 ), 'YYYYMM' ) AS gen_date 
	FROM
		xrange CONNECT BY LEVEL <= MONTHS_BETWEEN( TRUNC( end_date, 'MONTH' ), TRUNC( start_date, 'MONTH' ) ) + 1 
	) t;

4. 查询指定月份的所有日期列表

sql 复制代码
WITH xrange AS (
	SELECT
		to_date( '202501' || '01', 'yyyymmdd' ) AS start_date,
		last_day( to_date( '202501' || '01', 'yyyymmdd' ) ) AS end_date 
	FROM
		dual 
	) SELECT
	t.GEN_DATE AS start_date,-- 开始时间
	t.GEN_DATE AS end_date -- 结束时间
FROM
	( SELECT to_char( start_date + LEVEL - 1, 'YYYYMMDD' ) AS gen_date FROM xrange CONNECT BY start_date + LEVEL - 1 <= end_date ) t;
相关推荐
Mr_Xuhhh11 小时前
MySQL数据表操作全解析:从创建到管理
数据库·sql·oracle
大模型玩家七七11 小时前
向量数据库实战:从“看起来能用”到“真的能用”,中间隔着一堆坑
数据库·人工智能·python·深度学习·ai·oracle
Apple_羊先森11 小时前
ORACLE数据库巡检SQL脚本--4、检查锁阻塞
数据库·sql·oracle
晚风_END12 小时前
postgresql数据库|pgbouncer连接池压测和直连postgresql数据库压测对比
数据库·postgresql·oracle·性能优化·宽度优先
xfhuangfu14 小时前
Oracle AI db 26ai中借助dbca创建pdb的过程
数据库·oracle
久违81614 小时前
SQL注入攻击核心技术深度总结
数据库·sql·oracle
「光与松果」15 小时前
Oracle中v$session视图用法
数据库·oracle
2301_8109703918 小时前
第二次渗透作业
数据库·oracle
数形长夏18 小时前
接口还是慢,也许是你的表太规范了
数据库·oracle
是桃萌萌鸭~18 小时前
oracle日志文件详解
数据库·oracle·dba