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
);
最新文章
- UEditor的使用
- Arcgis 几何网络分析
- java获得本机IP,名称等
- 排序小结(C++版)
- jq的bind用法
- Oracle优化笔记
- PNPOLY - Point Inclusion in Polygon W. Randolph Franklin
- Java网络编程注意事项3
- crawler_大型舆情架构图
- 在ASP.NET Core中如何支持每个租户数据存储策略的数据库
- 金融量化分析【day112】:初识量化交易
- eclipse连接github,链接不上 cannot open git-upload-pack(git-receive-pack)
- ZIP解压缩工具类
- 解析3D标签云,其实很简单
- Jmeter自己jar包的引用
- python3.6配置libsvm2.2
- pycharm的安装(图文)
- s4-6 二层交换
- 20155217《网络对抗》Exp05 MSF基础应用
- 基于at91rm9200的i2c分析(DS1307实时时钟芯片)