Oracle数据库-常见的日期处理

‌Oracle ‌Dual表 是Oracle数据库中的一个虚拟表,任何用户均可读取,经常用在没有目标表的SELECT语句块。

SELECT '马铃薯' AS NAME, 'ORACLE数据库学习' AS PROJECT FROM dual

1. 获取当前日期

SYSDATE:获取计算机操作系统的当前日期和时间,是通过sysdate函数实现的

CURRENT_DATE:获取当前会话的时区的系统日期,一般使用的是东八区的时间(比较依赖时区)

SYSTIMESTAMP:获取本机的系统时间,精确到微秒,并包含了当前时区,跟会话的时区无关

SELECT SYSDATE, CURRENT_DATE, SYSTIMESTAMP FROM dual

2.TRUNC函数用于对值进行截断

用法有两种:TRUNC(NUMBER)表示截断数字,TRUNC(date)表示截断日期

1)TRUNC(number,num_digits)截断数字

其中Num_digits 用于指定取整精度的数字,Num_digits 的默认值为 0。

SELECT TRUNC(1996.1231) FROM DUAL            --1996
SELECT TRUNC(1996.1231, 1) FROM DUAL         --1996.1
SELECT TRUNC(1996.1231, -1) FROM DUAL        --1990

2)TRUNC(date)表示截断日期

复制代码
--截取当前日期的零点
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'DD') AS 截取日期 FROM DUAL  --2024-08-03 10:31:00        2024-08-03 00:00:00
--截取本周第一天的零点
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'D') AS 截取日期 FROM DUAL        --2024-08-03 10:32:11        2024-07-28 00:00:00
--截取本月第一天的零点
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'MM') AS 截取日期 FROM DUAL    --2024-08-03 10:33:22        2024-08-01 00:00:00
--截取本年第一天的零点
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'Y') AS 截取日期 FROM DUAL        --2024-08-03 10:35:01        2024-01-01 00:00:00

--截取到小时
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'HH') AS 截取日期 FROM DUAL    --2024-08-03 10:35:56        2024-08-03 10:00:00
--截取到分钟
SELECT SYSDATE AS 日期, TRUNC(SYSDATE, 'MI') AS 截取日期 FROM DUAL    --2024-08-03 10:38:13        2024-08-03 10:38:00
复制代码

 

3.添加月份、减少月份

ADD_MONTHS 是 Oracle 数据库中的一个函数,用于在给定日期上添加或减去指定的月份数

-- 获取20240603的上个月和下个月时间
SELECT ADD_MONTHS(to_date('20240603','yyyy-MM-dd'), -1) AS 上月时间, ADD_MONTHS(to_date('20240603','yyyy-MM-dd'), 1) AS 下月时间 FROM DUAL;

扩展:获取上个月份的第一天和最后一天

SELECT TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM') AS 上月第一天, LAST_DAY(ADD_MONTHS( SYSDATE, - 1 )) AS 上月最后一天 FROM DUAL;

 

4.使用next_day和last_day

1) next_day:此函数表示从指定日期开始算,下周几是几号(因为是按照一周来算,参数超过七天报错)

select next_day(to_date('2024-06-15','yyyy-MM-dd'),2) from dual    --2024-06-17 00:00:00

2) last_day: 此函数用来计算某个月的最后一天是哪天

select last_day(to_date('2024-06-15','yyyy-MM-dd')) from dual        --2024-06-30 00:00:00

 

5. 使用to_date 和 to_char设置日期时间格式

1)to_date是将字符串转换为时间格式

select to_date('2023/11/11 12:01:14','yyyy-MM-dd HH:MI:SS') from dual

2)to_char是将日期转换为字符串格式

select to_char(sysdate, 'yyyyMMdd HH:MI:SS') from dual

 

posted @   马铃薯1  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2023-08-03 13-面向对象-可变参数和作用域
2023-08-03 12-面向对象-方法重载(OverLoad)
点击右上角即可分享
微信分享提示