04-oracle时间函数
add_months(sysdate,x)x月之后的日期;
last_day(sysdate)指定日期所在月份的最后一天;
next_day(sysdate,'星期x')当前日期后的下一个星期x;
months_between(sysdate,hiredate) 两个日期之间的月份间隔;
extract(year/month/day from sysdate;year/month/day from date '2019-10-1')从日期字符串中分离出年月日;取得时间间隔
select hiredate 雇佣日期,
last_day(hiredate) 雇佣当月的最后1天,
next_day(hiredate,'星期二') 雇佣后第一个星期二的日期,
add_months(hiredate,6) 雇佣6个月后的日期,
months_between(sysdate,hiredate) 当前日期到雇佣日期之间的月数
from emp;

--sqlplus下默认只显示年月日不显示时间,设置以24小时制和12小时制的语句分别如下:
SQL> alter session set nls_date_format='yyyy-mm-dd hh12:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
--------------------
2019-04-10 09:54:56
SQL> alter session set nls_date_format='yyyy-mm-dd hh12:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
--------------------
2019-04-10 09:54:56

--日期-数字=日期
--日期+数字=日期
--日期-日期=数字(天数)
--日期+日期 错误语法
select sysdate,sysdate+3,sysdate-3 from dual;

select ename, hiredate,sysdate-hiredate 雇佣至今天数,(sysdate-10)-hiredate 到十天前的雇佣天数 from emp;

--add_months(当前日期,x) x月之后/之前的日期
select sysdate 当前日期,
add_months(sysdate,3) 三个月之后的日期,
add_months(sysdate,-3) 三个月之前的日期,
add_months(sysdate,60) 六十个月之后的日期
from dual;

select ename,hiredate 雇佣日期,add_months(hiredate,3)雇佣日期3个月后的日期 from emp;

--next_day(sysdate,'星期X') 下个星期X的日期
select sysdate 当前日期,
next_day(sysdate,'星期日') 下个星期日的日期,
next_day(sysdate,'星期二') 下个星期二的日期
from dual;

--last_day(sysdate)指定日期所在月份的最后一天
select sysdate,last_day(sysdate) from dual;

--查询雇佣日期为所在月份倒数第三天的员工信息。
select ename,job,
hiredate,last_day(hiredate) 雇佣日期坐在月的最后一天
from emp
where last_day(hiredate)-2=hiredate;

--months_between(sysdate,hiredate) 两个日期之间的月份间隔数
--查询员工的雇佣总月数和年数
select ename,job,hiredate,
trunc(months_between(sysdate,hiredate)) 当前日期和雇佣日期间隔的月数,
trunc(months_between(sysdate,hiredate)/12) 雇佣年数即雇月数除以12
from emp;

--员工入职至今的共x年x月x天
select ename 姓名, hiredate 雇佣日期,
trunc(months_between(sysdate,hiredate)/12) 年数,
trunc(mod(months_between(sysdate,hiredate),12)) 月数,
trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) 天数
from emp;

--extract(year/month/day from sysdate;year/month/day from date '2019-10-1')从日期字符串中分离出年月日
select
extract(year from sysdate) 年,
extract(month from sysdate) 月,
extract(day from sysdate) 日
from dual;

select
extract(day from time_one-time_two)
from(
select
to_timestamp('2019-10-1 19:12:33','yyyy-mm-dd hh24:mi:ss') time_one,
to_timestamp('2018-9-11 22:10:55','yyyy-mm-dd hh24:mi:ss') time_two
from dual);
select a 日期1,b 日期2,a-b 日期1减日期2,
extract(day from a-b) 日期1减日期2的day,
extract(year from a)-extract(year from b) 日期1减日期2的year
from
(
select to_timestamp('2019-12-14 18:34:45','yyyy-mm-dd hh24:mi:ss') a,
to_timestamp('1998-1-30 22:33:15','yyyy-mm-dd hh24:mi:ss') b
from dual
);

04-oracle时间函数的更多相关文章
- ORACLE时间函数(SYSDATE)深入理解
ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add ...
- oracle 时间函数
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from ...
- ORACLE时间函数(SYSDATE)简析
ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...
- Oracle时间函数numtoyminterval()
格式:NumToYMInterval(n, interval_unit); n: 数值类型 interval_unit: 'YEAR', 'MONTH' ,或其他可以转换成这两个值之一的表达式 N ...
- Oracle时间函数
YYYY年 Q季度 MM月 month月 WW当年第几周 W本月第几周 DDD 当年第几天 DD当月第几天 D当周内第几天 DY当周内星期几 day当周内星期几 HH或HH12:12进制小时数 HH2 ...
- [转载]ORACLE日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
- Oracle日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...
- [转]ORACLE日期时间函数大全
本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...
- Oracle时间日期函数
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
- Oracle TO_DATE() 函数格式化时间【全】
TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显 ...
随机推荐
- Thrift辅助类,用于简化Thrift编程
CThriftServerHelper用于服务端,CThriftClientHelper用于客户端. IDL定义: service PackageManagerService { } 服务端使用示例: ...
- 编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别
建议100:静态方法和实例方法没有区别 静态方法在加载时机和内存使用上和实例方法完全一致.在这里,我们先引出一个概念“类型对象”.比如类型Person,我们都知道new Person() 会产生一个对 ...
- SOAP协议初级指南 (一)
SOAP(Simple Object Access Protocal) 技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的应用能够被广泛的用户所访问.SOAP是把成熟的基于HTTP的WEB技 ...
- Linux CentOS 7 安装confluence 5.8.10
一..需要下载的安装包如下 1.atlassian-confluence-5.8.10-x64.bin #confluence安装包 2.confluence5.x-crack.zip #conflu ...
- 初涉Runtime (一)
Objective-C 是一门动态语言,有很多东西都是运行时才确定的. 比如这句代码首先声明testObject是一个NSString,然后创建了一个NSData对象,并且将这个对象的内存地址保存在t ...
- 理解Javascript中的事件绑定与事件委托
最近在深入实践js中,遇到了一些问题,比如我需要为动态创建的DOM元素绑定事件,那么普通的事件绑定就不行了,于是通过上网查资料了解到事件委托,因此想总结一下js中的事件绑定与事件委托. 事件绑定 ...
- react学习笔记(1):从前后端分离到项目部署
我来到现在这家公司有一年多的时间,一直做的是财政系统相关的产品,前端的技术栈用的是传统的jQuery+bootStrap+requireJs,随着项目的开发,越来越多的弊病凸显出来. 首先是前后端的代 ...
- ubuntu 跑.net core 2.0
安装.net core参考地址:http://www.microsoft.com/net/core/preview#linuxubuntu 服务器版本 UBbuntu 16.04 执行命令 ...
- docker 进入容器
- vector妙用轻松水过平衡树???
极短代码预警 今天听身边的神仙说,可以用vector来写平衡树,代码极短. 然后去网上搜了一下,看到了attack dalao的这篇文章. 蒟蒻表示ssfd 赶紧膜拜了一波,并发表了一篇博客表示纪念. ...