【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;
相关推荐
oradh2 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结
数据库·oracle·tx 锁 mode 4·oracle tx 锁
yi.Ist3 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
Irene19918 小时前
格式化掩码 FM999999999999999999999.00 是 Oracle 数据库中 TO_CHAR 函数的数字格式模型
oracle·数字格式
蓝鸟197410 小时前
Oracle HIS业务视图优化实战|VI_BQ_YWTX11从高耗费到秒级响应
数据库·oracle·his数据库调优·复合索引踩坑·is null索引问题·ql视图优化
煮煮论英雄14 小时前
单文件部署的MQTT轻量级物联网数据平台
jvm·物联网·oracle
蓝鸟197415 小时前
Python Flask + Oracle 接口开发 小白完整版笔记(入参/查库/批量/JSON/避坑)
python·oracle·flask
2601_9673387115 小时前
Text2SQL智能体基础到实战课程
数据库·oracle
祢真伟大15 小时前
Oracle含LOB大字段表的存储占用统计
数据库·oracle
严同学正在努力17 小时前
Oracle数据技术运维大全(下篇)
运维·数据库·ai·oracle·架构
Irene199117 小时前
FROM DUAL UNION ALL 是 Oracle 特有的写法,专门用来在 SQL 中手工构造一个固定的多行数据集(即“行值构造函数”)。
oracle·行值构造函数