【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/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步