ORACLE SQL日期处理

Oracle 中的日期型数据实际含有两个值: 日期和时间;当然有时候我们要显示给用户看的时间不一定是Oracle数据库的时间或用户提交过来的时间不符合数据库的格式,所以这时我们需要对日期进行一定的处理,以下是处理日期的函数:
日期的函数:

函数 描述
TO_DATE 把字符串转换成日期类型
TO_CHAR 把日期转化成字符串类型
MONTHS_BETWEEN 两个日期相差的月数
ADD_MONTHS 指定日期的下一个星期*对应的日期
NEXT_DAY 把字符串转换成日期类型
LAST_DAY 本月的最后一天
ROUND 日期的四舍五入
TRUNC 日期截断

日期格式元素:

YYYY 2019
YEAR TWO THOUSAND AND FOUR
MM 02
MONTH JULY
DY MON
DAY MONDAY
DD 02

时间格式元素:

HH24:MI:SS AM 16:20:36 PM
HH:MI:SS AM 16:20:36 PM
  1. TO_DATE函数对字符串的转换:
SELECT TO_DATE('2018-2月-16','yyyy-MON-dd')FROM DUAL;

ORACLE SQL日期处理
2. TO_CHAR函数对日期的转换:

SELECT TO_CHAR(sysdate,'yyyy-MON-dd')FROM DUAL;

ORACLE SQL日期处理
3. MONTHS_BETWEEN两个日期相差的月数:

SELECT MONTHS_BETWEEN(TO_DATE('2019-12-25','yyyy-MM-dd'),sysdate)FROM DUAL;

ORACLE SQL日期处理
4. ADD_MONTHS向指定日期中加上若干月数:

SELECT ADD_MONTHS(TO_DATE('2019-12-25','yyyy-MM-dd'),5)FROM DUAL;

ORACLE SQL日期处理
5. NEXT_DAY 指定日期的下一个星期*对应的日期

SELECT NEXT_DAY(TO_DATE('2019-12-25','yyyy-MM-dd'),'星期一')FROM DUAL;

ORACLE SQL日期处理
6. LAST_DAY本月的最后一天

SELECT LAST_DAY(TO_DATE('2019-12-25','yyyy-MM-dd'))FROM DUAL;

ORACLE SQL日期处理
7. ROUND对日期的四舍五入

  1. 参数为YEAY时,按月份:月份范围1-6年份不变,7-12年份+1,月日为1
SELECT ROUND(TO_DATE('2019-7-25','yyyy-MM-dd'),'YEAR')FROM DUAL;

ORACLE SQL日期处理
2) 参数为MONTH时,按日:日范围1-15月份不变,16-31月份+1,日为1

SELECT ROUND(TO_DATE('2019-7-16','yyyy-MM-dd'),'MONTH')FROM DUAL;

ORACLE SQL日期处理
8. TRUNC对日期的截断

  1. 参数为YEAY时,年份不变,月日为1
SELECT TRUNC(TO_DATE('2018-08-02','yyyy-MM-dd'),'YEAR') FROM DUAL;

ORACLE SQL日期处理
2) 参数为MONTH时,年月不变,日为1

SELECT TRUNC(TO_DATE('2018-08-15','yyyy-MM-dd'),'MONTH') FROM DUAL;

ORACLE SQL日期处理