ORACLE数据库日期函数
•发布于   •作者 陈广伟  •300 次浏览  •来自 资讯

MONTHS_BETWEEN(date1,date2):两个日期的月份差,求出的结果带小数部分

SELECT MONTHS_BETWEEN(sysdate,'28-Jan-17')

FROM dual;

求年差:

MONTHS_BETWEEN(date1,date2)/12

求日期差:

date1-date2

求小时差:

(date1-date2)*24

求分:

(date1-date2)*24*60

求秒:

(date1-date2)*24*60*60

add_months(date,添加的月份):增加几个月

SELECT add_months(sysdate,3)

FROM dual;

增加年:

add_months(date,n*12):增加n年

增加日期:date+n

sysdate+3

增加小时:

sysdate+3/24

增加分:

sysdate+3/24/60

增加秒:

sysdate+3/24/60/60

NEXT_DAY(date,'sunday'):当前日期之后的第一个星期日

SELECT NEXT_DAY(sysdate,'monday')

FROM dual;

LAST_DAY(date):当前日期所在的月的最后一天

SELECT last_day(sysdate)

FROM dual;

ROUND:四舍五入

SELECT ROUND(sysdate,'year')

FROM dual;//2017-01-01

year:四舍五入到年,是否进位看月,逢7进1

SELECT ROUND(sysdate,'mm')

FROM dual;//2017-01-01

mm:四舍五入到月,是否进位看日:逢16进1

SELECT ROUND(sysdate,'dd')

FROM dual;

dd:四舍五入到日,是否进位看时:逢12进1

TRUNC:截取

SELECT TRUNC(sysdate,'year')

FROM dual;

SELECT TRUNC(sysdate,'mm')

FROM dual;

SELECT TRUNC(sysdate,'dd')

FROM dual;

eg:

SELECT sysdate-to_date('2017-01-01','yyyy-mm-dd')

FROM dual;

day:星期,精确到星期

SELECT ROUND(SYSDATE, 'day') FROM dual;

如果一周没有过半,就得到当前星期的星期日,过半的到下一个星期日

SELECT TRUNC(SYSDATE, 'day') FROM dual;

无论如何,得到的都是本周的周日(第一天)

SYSDATE:默认格式,dd-Mon-yy

SYSTIMESTAMP:默认格式精确到毫秒

SELECT systimestamp

FROM dual;


0 回复
回到顶部

©2017 Powered by 三十三行伪代码
皖ICP备17005175号-3