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 |
- TO_DATE函数对字符串的转换:
SELECT TO_DATE('2018-2月-16','yyyy-MON-dd')FROM DUAL;
2. TO_CHAR函数对日期的转换:
SELECT TO_CHAR(sysdate,'yyyy-MON-dd')FROM DUAL;
3. MONTHS_BETWEEN两个日期相差的月数:
SELECT MONTHS_BETWEEN(TO_DATE('2019-12-25','yyyy-MM-dd'),sysdate)FROM DUAL;
4. ADD_MONTHS向指定日期中加上若干月数:
SELECT ADD_MONTHS(TO_DATE('2019-12-25','yyyy-MM-dd'),5)FROM DUAL;
5. NEXT_DAY 指定日期的下一个星期*对应的日期
SELECT NEXT_DAY(TO_DATE('2019-12-25','yyyy-MM-dd'),'星期一')FROM DUAL;
6. LAST_DAY本月的最后一天
SELECT LAST_DAY(TO_DATE('2019-12-25','yyyy-MM-dd'))FROM DUAL;
7. ROUND对日期的四舍五入
- 参数为YEAY时,按月份:月份范围1-6年份不变,7-12年份+1,月日为1
SELECT ROUND(TO_DATE('2019-7-25','yyyy-MM-dd'),'YEAR')FROM DUAL;
2) 参数为MONTH时,按日:日范围1-15月份不变,16-31月份+1,日为1
SELECT ROUND(TO_DATE('2019-7-16','yyyy-MM-dd'),'MONTH')FROM DUAL;
8. TRUNC对日期的截断
- 参数为YEAY时,年份不变,月日为1
SELECT TRUNC(TO_DATE('2018-08-02','yyyy-MM-dd'),'YEAR') FROM DUAL;
2) 参数为MONTH时,年月不变,日为1
SELECT TRUNC(TO_DATE('2018-08-15','yyyy-MM-dd'),'MONTH') FROM DUAL;