【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;
相关推荐
MXM_77716 小时前
laravel 并发控制写法-涉及资金
java·数据库·oracle
2301_8002561118 小时前
第九章:空间网络模型(空间网络查询、数据模型、Connected、with Recursive、pgRouting)
网络·数据库·算法·postgresql·oracle
oMcLin1 天前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
l1t1 天前
NineData第三届数据库编程大赛:用一条 SQL 解数独问题我的参赛程序
数据库·人工智能·sql·算法·postgresql·oracle·数独
菜鸟笔记本1 天前
linux设置定时备份mysql数据
linux·mysql·oracle
小宇的天下1 天前
Calibre nmDRC Results(19-1)
服务器·数据库·oracle
晴天¥1 天前
Oracle如何在DBeaver上进行登录
数据库·oracle
2301_800256111 天前
事务处理-同步与调度-两阶段锁-隔离级别
数据库·oracle
施嘉伟2 天前
Oracle SQL Profile 固化执行计划实战说明
数据库·sql·oracle