oracle的trunc与round处理日期和数值的区别
oracle的
trunc(date,[fmt])
解释:返回截取时间部分后的DATE,如果有fmt部分的设置,则返回与该部分最近的日期。
round(date,[fmt])
解释:返回将日期date舍入后的DATE,如果有fmt部分的设置,则按照fmt指定的格式舍入返回DATE。
一、用trunc函数处理日期
日期用例 '2008-11-28 12:59:59'周五
1.没有fmt部分时
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:00:01','YYYY-MM-DD hh24:mi:ss')) FROM DUAL;
结果: 2008-11-28
2.得到最当前日期之前的最近的一个周日的日期
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'D') FROM DUAL;
结果: 2008-11-23 周日
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'D')+1 FROM DUAL;
结果: 2008-11-24 周一
3.得到最当前日期的所在月份的第一天
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'MM') FROM DUAL;
结果: 2008-11-1
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'MM')-1 FROM DUAL;
结果: 2008-10-31
4.得到最当前日期的所在年份的第一天
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'Y') FROM DUAL;
结果: 2008-1-1
语句: SELECT TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'Y')-1 FROM DUAL;
结果: 2007-12-31
二、用round函数处理日期
日期用例 '2008-11-28 11:59:59'周五
'2008-11-28 12:00:00'周五
'2008-11-28 11:59:59'周五
'2008-11-28 11:59:59'周五