Oracle常用日期处理函数有哪些?这些函数可以实现哪些功能?

2023-08-10 15:17:02 浏览数 (1)

题目部分

Oracle常用日期处理函数有哪些?这些函数可以实现哪些功能?

答案部分

有关日期函数需要了解以下几点:

(1)日期函数用于处理DATE类型的数据。

(2)在日期上加上或减去一个数字结果仍为日期。

(3)两个日期相减返回日期之间相差的天数。

(4)默认情况下,日期格式为DD-MON-RR。

(5)查询当前数据库日期格式的命令:SELECT SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') FROM DUAL;。

(6)SYSDATE:该函数返回系统时间。

(7)LAST_DAY(D):返回指定日期所在月份的最后一天。

(8)MONTHS_BETWEEN:表示两个日期的月份之差,即在给定的两个日期之间有多少个月。

(9)ADD_MONTHS(D,N):该函数将给定的日期增加N个月。当N为正数时,该函数将给定的日期增加N个月,为负数时减去N个月,该函数很常用,可以用来表示上个月、下个月,去年和下一年等等。

(10)NEXT_DAY(D,N):返回以时间点D为基准(开始),下一个“目标日N”的日期。

由于数据库以数字方式存储日期,因此,日期类型可以进行算术运算(加法或减法)。例如:可以给日期增加或减去一个数字,得到的结果还是一个日期值,两个日期相减,得到两个日期之间的天数,用小时除以24就可以得到天数。

SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;--求月份

SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), -1), 'YYYY-MM') FROM DUAL;--上一个月

SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), 1), 'YYYY-MM') FROM DUAL;--下一个月

SELECT SYSDATE,ADD_MONTHS(SYSDATE, -12) FROM DUAL;--去年

SELECT EMPNO,HIREDATE,MONTHS_BETWEEN(SYSDATE,HIREDATE)/12 YEARS FROM SCOTT.EMP;

另外,日期中常用到的一个修改日期语言的SQL:

修改为英文:ALTER SESSION SET NLS_LANGUAGE='AMERICAN';

修改为中文:ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

在英语的环境中,查询星期时要用英文,示例代码如下所示:

SYS@lhrdb21> SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL;

SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL

*

ERROR at line 1:

ORA-01846: not a valid day of the week

SYS@lhrdb21> ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

会话已更改。

SYS@lhrdb21> SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL;

NEXT_DAY(SYSDATE,'

-------------------

2016-09-13 09:32:58

判断当天是否月份最后一天的代码如下所示:

SYS@lhrdb21> WITH T AS

2 (SELECT SYSDATE DAT FROM DUAL)

3 SELECT DECODE(DAT, LAST_DAY(DAT), 'YES', 'NO') FROM T;

DEC

---

NO

SYS@lhrdb21> SELECT SYSDATE FROM DUAL;

SYSDATE

-------------------

2016-09-09 09:33:56

0 人点赞