【DB笔试面试451】Oracle常用日期处理函数有哪些?这些函数可以实现哪些功能?

  • 2019 年 10 月 11 日
  • 筆記

题目部分

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

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步