数据库Oracle日期函数
SYSDATE 函数:是一个日期函数,它返回当前数据库服务器的日期和时间。
用日期计算:
• 从日期加或者减一个数,结果是一个日期值
• 两个日期相减,得到两个日期之间的天数
• 用小时数除以 24,可以加小时到日期上
SQL> select sysdate from dual;
SYSDATE
-----------
2019/7/30 1
SQL> select sysdate+1 from dual;
SYSDATE+1
-----------
2019/7/31 1
SQL> select sysdate+1/24 from dual;
SYSDATE+1/24
------------
2019/7/30 20
SQL> select sysdate-3 from dual;
SYSDATE-3
-----------
2019/7/27 1
用日期做算术运算:
例:显示所有在部门 90 中的雇员的名字和从业的周数。雇员的总工作时间以周计算。
SQL> select last_name,hire_date,trunc((sysdate-hire_date)/7) "周长:" from employees where department_id=90 order by hire_date,trunc((sysdate-hire_date)/7);
LAST_NAME HIRE_DATE 周长:
------------------------- ----------- ----------
De Haan 2001/1/13 967
King 2003/6/17 841
Kochhar 2005/9/21 722
日期函数:
MONTHS_BETWEEN(date1,date2):计算 date1 和 date2 之间的月数。其结果可以是正的也可以是负的。如果 date1 大于 date2,结果是正的。反之,结果是负的。
date1:日期类型。
date2:日期类型。
SQL> select employee_id,last_name,hire_date,trunc(months_between(sysdate,hire_date)) from employees where department_id=90 order by employee_id;
EMPLOYEE_ID LAST_NAME HIRE_DATE TRUNC(MONTHS_BETWEEN(SYSDATE,H
----------- ------------------------- ----------- ------------------------------
100 King 2003/6/17 193
101 Kochhar 2005/9/21 166
102 De Haan 2001/1/13 222
ADD_MONTHS(date, n):添加 n 个日历月到 date。n 的值必须是整数,但可以是负的。
date:日期类型。
n:整数
SQL> select add_months(sysdate,2) from dual;
ADD_MONTHS(SYSDATE,2)
---------------------
2019/9/30 20:06:46
SQL> select add_months(sysdate,-2) from dual;
ADD_MONTHS(SYSDATE,-2)
----------------------
2019/5/30 20:07:25
NEXT_DAY(date, ‘char’):计算在 date 之后的下一个周(‘char’)的指定天的日期。char 的值可能是一个表示一天的数或者是一个字符串。如果使用数字表示星期,1 是从星期日开始。
数字范围为:1-7。
date:日期类型。
char:数字或字符串。
SQL> select next_day(sysdate,3) from dual;
NEXT_DAY(SYSDATE,3)
-------------------
2019/8/6 20:09:43
SQL> select next_day(sysdate,'星期五') from dual;
NEXT_DAY(SYSDATE,'星期五')
-----------------------
2019/8/2 20:10:02
LAST_DAY(date):计算包含 date 的月的最后一天的日期。
date:日期类型。
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
-----------------
2019/7/31 20:12:1
SQL> select last_day(add_months(sysdate,2)) from dual;
LAST_DAY(ADD_MONTHS(SYSDATE,2)
------------------------------
2019/9/30 20:14:16
ROUND(date,‘fmt’):返回用格式化模式 fmt 四舍五入到指定单位的 date ,如果格式模式 fmt 被忽略,date 被四舍五入到最近的天。fmt如果不写,则默认是day.
date:日期类型。
fmt:字符串类型。
SQL> select round(sysdate) from dual;
ROUND(SYSDATE)
--------------
2019/7/31
SQL> select round(sysdate,'yy') from dual;
ROUND(SYSDATE,'YY')
-------------------
2020/1/1
SQL> select round(sysdate,'mm') from dual;
ROUND(SYSDATE,'MM')
-------------------
2019/8/1
SQL> select round(sysdate,'dd') from dual;
ROUND(SYSDATE)
--------------
2019/7/31
TRUNC(date, ‘fmt’):返回用格式化模式 fmt 截断到指定单位的带天的。如果格式模式fmt 被忽略,date 被截断到最近的天。
date:日期类型。
fmt:字符串类型。
trunc和round的用法一模一样,只不过trunc不会四舍五入,是多少,就是多少。
例 1:
查询所有受雇在 15 年 (180 个月) 以内的雇员的 employee_id,hire_date,显示他们已被雇用的月,从受雇日期开始加 6 个月的试用期后的日期,受雇日期后的第一个星期五是几号,以及受雇月的最后一天是几号。
SQL> select employee_id,hire_date,trunc(months_between(sysdate,hire_date)),next_day(add_months(hire_date,6),'星期五'),last_day(add_months(hire_date,6)) from employees where trunc(months_between(sysdate,hire_date))<180;
EMPLOYEE_ID HIRE_DATE TRUNC(MONTHS_BETWEEN(SYSDATE,H NEXT_DAY(ADD_MONTHS(HIRE_DATE, LAST_DAY(ADD_MONTHS(HIRE_DATE,
----------- ----------- ------------------------------ ------------------------------ ------------------------------
101 2005/9/21 166 2006/3/24 2006/3/31
103 2006/1/3 162 2006/7/7 2006/7/31
104 2007/5/21 146 2007/11/23 2007/11/30
105 2005/6/25 169 2005/12/30 2005/12/31
106 2006/2/5 161 2006/8/11 2006/8/31
107 2007/2/7 149 2007/8/10 2007/8/31
110 2005/9/28 166 2006/3/31 2006/3/31
111 2005/9/30 166 2006/4/7 2006/3/31
112 2006/3/7 160 2006/9/8 2006/9/30
113 2007/12/7 139 2008/6/13 2008/6/30
例 2:
查询受雇日期,找出 2002 年开始工作的哪些人。用 ROUND 和 TRUNC 函数显示开始的月份。
SQL> select round(hire_date,'month'),trunc(hire_date,'month') from employees where substr(hire_date,-2)=02;
ROUND(HIRE_DATE,'MONTH') TRUNC(HIRE_DATE,'MONTH')
------------------------ ------------------------
2002/9/1 2002/8/1
2002/9/1 2002/8/1
2002/12/1 2002/12/1
2002/6/1 2002/6/1
2002/6/1 2002/6/1
2002/6/1 2002/6/1
2002/6/1 2002/6/1
7 rows selected
数据库Oracle日期函数的更多相关文章
- Oracle日期函数
Oracle日期函数用于对Oracle数据库中的日期及时间进行处理. (1)ADD_MONTHS Oracle日期函数返回一个具有与所提供日期相差月份的日期,函数中给出了未来或以前的月份数.语法如下: ...
- ORACLE 日期函数
ORACLE 日期函数 SYSDATE 当前的数据库系统时间 ADD_MONTHS(加减指定的月份) MONTHS_BETWEEN(取两个日期之间相隔的月数) LAST_DAY(取指定日期所在月的最 ...
- Oracle数据库之日期函数
今天给大家介绍一下oracle数据中的日期函数的用法.废话不多说,我们看一下oracle给我们提供了那些函数? 1.sysdate 用途:获取当前系统时间. 2.to_date('字符类型','日期类 ...
- oracle日期函数转换真麻烦。。。
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2011 ...
- sql数据库中日期函数---2017-04-12
一.SQLServer时间日期函数详解 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 ...
- Oracle日期函数和循环总结
一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...
- oracle日期函数2!
1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual 当前时间减去7小时的时间 ...
- oracle日期函数集锦
oracle 中select TO_CHAR(sysdate,'Mon') from dual; Question:出来是中文的“6月” 我想要英文的怎么办? Answer:select to_cha ...
- ORACLE 日期函数[转载]
一. 常用日期数据格式 .Y或YY或YYY 年的最后一位,两位或三位 SQL> Select to_char(sysdate,'Y') from dual; TO_CHAR(SYSDATE,'Y ...
随机推荐
- mvn上传dubbo jar到nexus
第一种方式: mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=j ...
- 思科获取DHCP过程
主机如何获取DHCP的过程? 地址请求: 客户端发布一个DHCP请求信息,该信息会发给网内所有主机,非DHCP服务器会丢弃信息. 地址提供: DHCP服务端收到该信息后,会从地址池内挑选一个未被使用的 ...
- 【实战】如何通过html+css+mysql+php来快速的制作动态网页(以制作一个博客网站为列)
一.开发环境的搭建 (1)apache+php+mysql环境搭建 因为要用apache来做服务器,mysql作为数据库来存储数据,php来写代码以此实现网页与数据库的交互数据,所以需要下载上述软件, ...
- [ISE调试] 在ISE调试过程中,遇到过的warning以及消除办法
1.在generate的过程中,在Map环节遇到了下面这个warning 意思:告诉你是黑盒子,而且他本来在设计里面就是黑盒子. 解决办法:点击图中的,会弹出一个代码文件,是声明这个IP核的文件,代码 ...
- nyoj 844-A+B Problem(V) (string[::-1] 字符串反转)
844-A+B Problem(V) 内存限制:64MB 时间限制:1000ms 特判: No 通过数:14 提交数:17 难度:1 题目描述: 做了A+B Problem之后,Yougth感觉太简单 ...
- Win32窗口消息机制 x Android消息机制 x 异步执行
如果你开发过Win32窗口程序,那么当你看到android代码到处都有的mHandler.sendEmptyMessage和 private final Handler mHandler = new ...
- opencv 4 图像处理(漫水填充,图像金字塔与图片尺寸缩放,阈(yu)值化)
漫水填充 实现漫水填充算法:floodFill函数 简单调用范例 #include <opencv2/opencv.hpp> #include <opencv2/imgproc/im ...
- HTTP,HTTPS,HTTP2笔记
HTTP 网络协议分层 应用层 -> HTTP FTP 为应用软件提供了很多服务 构建于TCP协议之上 屏蔽网络传输的相关细节 传输层 -> TCP UDP 向用户提供可靠的端对端的服务( ...
- ES6的基础知识(一)
1.ECMAScript 6.0(以下简称ES6). 2.ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的其中一种实现. 3.对ES6支持的浏览器:超过 90% ...
- vux组件的全局注册引入
安装好vux后,要引入全局组件是要在main.js中使用Vue.component引入的,不能直接使用Vue.use,不能直接使用Vue.use,不能直接使用Vue.use import router ...