天天看点

ORACLE SQL日期处理

ORACLE SQL日期处理

开发工具与关键技术:Oracle sql*plus  PLSQL Developer
撰写时间:2019年04月07日
           

这篇日期处理主要表达的是, 使用日期的一些相关函数处理日期,得出想要的结果。

相关函数:

MONTHS_BETWEEN: 两个日期相差的月数

简单理解:意思:给出两个年月日,自动算出,而不用再写些相减,还要算月份那些

格式:SELECT 空格 函数(日期,日期) 空格 from 空格 表名

格式说明:相差函数(日期,日期)这里必须是日期格式才能使用,不符合就会报错,可以像下图一样转换

ADD_MONTHS: 向指定日期中加上若干月数

简单理解:就是在基础月上添加想要的月个数

格式:查询 空格 函数(日期,月个数)空格 from 空格 表名

NEXT_DAY: 指定日期的下一个星期 x 对应的日期

简单理解:例如这个日期7号(星期日),我要知道下个星期五,那这个星期五就是从7号开始往下找,找到星期五那个日期

格式:查询 空格 函数(日期,’下个星期几’)空格from 表名

LAST_DAY: 本月的最后一天

简单理解:就是给出的日期的本月最后一天

格式:查询 空格 函数(日期)空格 from 空格 表名

ROUND 日期四舍五入

简单理解:就是将日期进行四舍五入,当号数满15就进一(加一个月),当月数满6就进一(加一年)天数的个人也不知道怎么理解,所以没有写天

格式 :查询 空格 函数(日期,’月或者年的函数’)空格 from 空格 表名

TRUNC 日期截断

简单理解:就是将日期直接截断,没有四舍五入的了,在月截断就是号回复到1号,年截断就是回复到一月

格式 :查询 空格 函数(日期,’月或者年的函数’)空格 from 空格 表名

相关例子:

MONTHS_BETWEEN的例子

SELECT MONTHS_BETWEEN(sysdate,to_date('1999-02-08','yyyy-mm-dd'))
from DEPT
           
ORACLE SQL日期处理

这里为什么会有小数呢,sysdate有日期与时间结合起来的,

更明显的例子

SELECT MONTHS_BETWEEN(to_date('1999-03-08','yyyy-mm-dd'),to_date('1999-02-08','yyyy-mm-dd'))
from DEPT;
           
ORACLE SQL日期处理

ADD_MONTHS的例子

两个月后的现在

SELECT ADD_MONTHS(sysdate,2)
from DEPT;
           
ORACLE SQL日期处理

当然也是可以使用转换函数的

SELECT ADD_MONTHS(to_date('1999-01-08','yyyy-mm-dd'),2)
from DEPT;
           
ORACLE SQL日期处理

NEXT_DAY的例子(注意:我这里是汉化过来的,所以是中文的星期六)

SELECT NEXT_DAY(to_date('1999-01-08','yyyy-mm-dd'),'星期六')
    from DEPT;
           
ORACLE SQL日期处理

LAST_DAY的例子(它主要一个日期就可以的了)

SELECT LAST_DAY(to_date('1999-01-08','yyyy-mm-dd'))
from DEPT;
           
ORACLE SQL日期处理

ROUND的例子

SELECT ROUND(to_date('1999-02-14','yyyy-mm-dd'),'MONTH')//月的函数就会把号进行四舍五入,然后归一
from DEPT;
           
ORACLE SQL日期处理

年的就会将月与号都会归一

SELECT ROUND(to_date('1999-02-14','yyyy-mm-dd'),'YEAR')  from DEPT; 
           
ORACLE SQL日期处理

TRUNC的例子,

直接在月截断,号归一,号是16也没法进一

SELECT TRUNC(to_date('1999-10-16','yyyy-mm-dd'),'month')
from DEPT;
           
ORACLE SQL日期处理

直接在年截断,月与号都归一,月与号都没法进一

SELECT TRUNC(to_date('1999-10-16','yyyy-mm-dd'),'year')
from DEPT;
           
ORACLE SQL日期处理