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
标签:SYSDATE,00,--,数据库,2024,日期,Oracle,SELECT,TRUNC From: https://www.cnblogs.com/REN-Murphy/p/18340178