单行函数(日期函数)

伪列不存在的列,但是能显示
SELECT SYSDATE FROM dual;//时间
SELECT SYSTIMESTAMP FROM dual;//时间戳
公式:
日期+数字 = 日期(若干天之后的日期)
日期 - 数字 = 日期(若干天之前的日期)
日期-日期 = 数字(天数)
SELECT SYSDATE-7 ,SYSDATE+120 FROM dual;
对于日期而言,由于每个月的天数是不同的,所以直接进行天数加法实现月数的计算时不准确的.
SELECT empno,ename,job,SYSDATE- hiredate FROM emp;
为了准确的进行日期操作,在ORACLE里面提供四个日期处理函数。
NO 函数名称 描述
1 日期ADD_MONTHS(列|日期,月数) 在指定的日期上增加若干个月之后的日期
2 数字MONTHS_BETWEEN(列|日期,列|日期) 返回两个日期直接的所经历月数
3 日期LAST_DAY(列|日期) 取得指定日期的最后一天
4 日期NEXT_DAY(列|日期) 返回下一个一周时间数指定的日期
计算所有雇员到今天为止的月数
SELECT empno,ename,hiredate,ROUND(MONTHS_BETWEEN(SYSDATE,hiredate)) FROM emp;
计算当前时间所在月的最后一天日期;
SELECT LAST_DAY(SYSDATE)FROM dual;
要求查询所有在雇佣所在月倒数第三天雇佣的雇员信息;
SELECT hiredate,ename, LAST_DAY(hiredate)-2 FROM emp WHERE hiredate=LAST_DAY(hiredate)-2;
SELECT LAST_DAY(hiredate)-2 FROM emp WHERE hiredate=LAST_DAY(hiredate)-2;
SELECT * FROM emp WHERE hiredate=LAST_DAY(hiredate)-2;
利用日期函数的操作是最准确的。
SELECT NEXT_DAY(SYSDATE,’星期二’)FROM dual;//现在到下一个这个星期
例子:要求以年、月、日的方式计算出雇员到现在为止的雇佣年限。
SELECT empno,ename,hiredate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12)year,//得到empo,ename,hiredate表,并且得到省略后的月数
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12))months,//对年数求模
TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate)))day//当前日期-雇佣日期增加的(当前日期与雇佣日期的月数差)ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate))年和月没有天数
FROM emp;

你可能感兴趣的:(数据库)