Oracle中与日期时间有关的运算函数
1 ADD_MONTHS
格式:ADD_MONTHS(D,N)
说明:返回日期时间D加N月后对应的日期时间。N为正时则表示D之后;N为负时则表示为D之前;N为小数则会自动先删除小数部分,而用整数部分
举例:
SQL>SELECT ADD_MONTHS(SYSDATE,7) A,ADD_MONTHS(SYSDATE,-7) B,ADD_MONTHS(SYSDATE,7.9)C FROM DUAL;
A B C
------------------------------------- ------------------
2015/1/2016:07:02 2013/11/20 16:07:02 2015/1/20 16:07:02
2 CURRENT_DATE
格式:CURRENT_DATE
说明:返回当前会话时区所对应的日期
举例:SQL> SELECTCURRENT_DATE A FROM DUAL;
A
-------------------
2014/6/2016:09:04
3 CURRENT_TIMESTAMP
格式:CURRENT_TIMESTAMP([P])
说明:返回当前会话时区所对应的日期时间时间戳。P为精度,可以是O—9之间的一个整数,默认为6
举例:
SQL>SELECT CURRENT_TIMESTAMP A,CURRENT_TIMESTAMP(9) B FROM DUAL;
A B
----------------------------------------------------------------------------------------------
20-6月-14 04.12.33.402000下午 +08:00 20-6月 -1404.12.33.402000000下午 +08:00
4 DBTIMEZONE
格式:DBTIMEZONE
说明:返回数据库时区
举例:
SQL>SELECT DBTIMEZONE A FROM DUAL;
A
------
+00:00
5 EXTRACT
格式:EXTRACT(C,FROM D)
说明:返回日期时间D中指定的部分C。C的取值为YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,TIMEZONE_HOUR,TIMEZONE_MINUTE, TIMEZONE_REGION, TIMEZONE_ABBR。指定的C必须在D中存在
举例:
抽取年月日
SQL>SELECT EXTRACT(YEAR FROM SYSDATE) A,EXTRACT(MONTH FROM SYSDATE) B,EXTRACT(DAYFROM SYSDATE) C FROM DUAL;
A B C
-------------------- ----------
2014 6 20
抽取时分秒不能从SYSDATE中抽取,SYSTIMESTAMP返回的UTC标准时间
SQL>SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) A,EXTRACT(MINUTE FROM SYSTIMESTAMP)B,EXTRACT(SECOND FROM SYSTIMESTAMP) C FROM DUAL;
A B C
-------------------- ----------
8 26 50.052
6 LAST_DAY
格式:LAST_DAY(D)
说明:返回日期D所在月份的最后一天
举例:
SQL>SELECT LAST_DAY(SYSDATE) A FROM DUAL;
A
------------------
2014/6/3016:40:08
7 LOCALTIMESTAMP
格式:LOCALTIMESTAMP([p])
说明:返回当前会话时区的日期时间。P为精度,可以是0-9之间的一个整数,默认为6。与CURRENT_TIMESTAMP在返回值的数据类型上有区别
举例:
SQL>SELECT LOCALTIMESTAMP(4) A FROM DUAL;
A
--------------------------------------------------------------------------------
20-6月-14 04.42.09.2800下午
8 MONTHS_BETWEEN
格式:MONTHS_BETWEEN(D1,D2)
说明:返回日期D1和D2之间相差的月数。如果D1小于D2,则返回负数:如果D1和D2的天数相同或都是月底,则返回整数;或者Oracle以每月31天为准计算结果的小数部分
举例:
SQL>SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2013-12-31','YYYY-MM-dd'))A,MONTHS_BETWEEN(SYSDATE,TO_DATE('2015-12-1','YYYY-MM-dd')) A FROM DUAL;
A A
--------------------
5.66771318-17.364544
9 NEXT_DAY
格式:NEXT_DAY(D,C)
说明:返回日期D后的下一个C。C是一个字符串,表示用当前会话语言表示的一周中某一天的全称(如星期一、星期二等),也可以是数值。
举例:SQL> SELECTNEXT_DAY(SYSDATE,3) A, NEXT_DAY(SYSDATE,'星期一') B FROM DUAL;
A B
-------------------------------------------
2014/6/2416:48:562014/6/23 16:48:56
10 ROUND
格式:ROUND(date,fmt)
说明:日期的四舍五入。
fmt为year或者YY,按**1-6月和7-12月**四舍五入到最近的几几年1月1日
fmt为month或者MM,按**1-15日和16-30日**四舍五入到最近的几月1日
fmt为day,按**周一到周三和周四到周日**四舍五入到最近的周日
fmt为DD,如果小时超过12,向前进1
fmt为HH,如果分超过30,向前进1
fmt为分MI,到分,秒数30是分界线,相当于四舍五入的5,如果秒超过30,向前进1
fmt为秒SS,精确到秒
举例:
SQL>SELECT ROUND(TO_DATE('2013-11-24 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YY') AFROM DUAL;
A
-----------
2014/1/1
SQL>SELECT ROUND(TO_DATE('2013-11-24 10:31:11','YYYY-MM-DD HH24:MI:SS'),'MM') AFROM DUAL;
A
-----------
2013/12/1
SQL>SELECT ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'Day')A,ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'DD') B FROMDUAL;
A B
----------------------
2013/11/24 2013/11/25
SQL>SELECT ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'HH') A,ROUND(TO_DATE('2013-11-2510:31:11','YYYY-MM-DD HH24:MI:SS'),'MI') B FROM DUAL;
A B
---------------------------------------
2013/11/2511:00:00 2013/11/25 10:31:00
11 SESSIONTIMEZONE
格式:SESSIONTIMEZONE
说明:返回当前会话的时区
举例:
SQL>SELECT SESSIONTIMEZONE A FROM DUAL;
A
---------------------------------------------------------------------------
+08:00
12 SYS_EXTRACT_UTC
格式:SYS_EXTRACT_UTC(datetime_wuth_timezone)
说明:返回UTC时间
举例:
SQL>SELECT SYS_EXTRACT_UTC(SYSTIMESTAMP) A FROM DUAL;
A
--------------------------------------------------------------------------------
24-6月-14 03.05.09.136892上午
13 SYSDATE
格式:SYSDATE
说明:返回当前时间,数据库驻留的操作系统时间
举例:
SQL>SELECT SYSDATE A FROM DUAL;
A
------------------
2014/6/2411:06:24
14 SYSTIMESTAMP
格式:SYSTIMESTAMP
说明:返回系统时间,包含时区信息,带微秒
举例:
SQL>SELECT SYSTIMESTAMP A FROM DUAL;
A
--------------------------------------------------------------------------------
24-6月-14 11.09.50.997760上午 +08:00
15 TRUNC
格式:TRUNC(d[,fmt])
说明:截断日期,只有d一个参数时,返回日期时间。
fmt为yyyy或者yy时,返回当年第一天
fmt为mm时,返回当月第一天
fmt为dd时,返回当前年月日
fmt为d时,返回当前星期的第一天
fmt为hh时,截取到当前的小时
fmt为mi时,截取到当前的分钟
举例:
SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS')) A FROM DUAL;
A
-----------
2013/11/25
SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YYYY')A,TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YY') B FROM DUAL;
A B
----------------------
2013/1/1 2013/1/1
SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'MM')A,TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'DD') B FROM DUAL;
A B
----------------------
2013/11/1 2013/11/25
SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'D') A FROMDUAL;
A
-----------
2013/11/24
SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'HH') A,TRUNC(TO_DATE('2013-11-2510:31:11','YYYY-MM-DD HH24:MI:SS'),'MI') B FROM DUAL;
A B
--------------------------------------
2013/11/2510:00:00 2013/11/25 10:31:00
Oracle中与日期时间有关的运算函数的更多相关文章
- Oracle中有关日期的语法
Oracle中有关日期的语法 Oracle提供了丰富的日期函数.利用日期函数可以灵活的对日期进行运算. to_date()函数——将字符串转换为日期型 to_date()函数用于将字符串转换为日期.被 ...
- Android中关于日期时间与时区的使用总结
在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix tim ...
- 在mysql数据库中关于日期时间字段的处理
在mysql数据库中关于日期时间字段的处理 在开发中,日期时间字段一般有如下几种设计 假设要获取2013-08-15日到2013-08-16日之间的记录 1. 直接使用日期时间类字段 相关sql语句如 ...
- SQL-27 给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。 提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)
题目描述 给出每个员工每年薪水涨幅超过5000的员工编号emp_no.薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列. 提示:在s ...
- oracle 生成随机日期+时间
oracle 生成随机日期+时间 SELECT to_date(TRUNC(DBMS_RANDOM.VALUE(to_number(to_char(to_date('20110101','yyyymm ...
- Oracle中的日期数据类型
TimeStamp日期类型 TimeStamp数据类型用于存储日期的年.月.日,以及时间的小时.分和秒,其中秒值精确到小数点后6位,该数据类型 同时包含时区信息.systimestamp函数的功能是返 ...
- 【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
写在前面 Java8之前的日期和时间API,存在一些问题,比如:线程安全的问题,跨年的问题等等.这些问题都在Hava8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大.立志 ...
- MYSQL 中常用日期时间函数使用
MySQL Date 函数 下面的表格列出了 MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 ...
- SQL中的日期时间函数
之所以把日期时间函数单独拿出来回顾一下,是因为这一部分的内容比较独立,C#中也有类似的日期时间函数,趁着想得起来,写个标题先.
随机推荐
- Python2.X和Python3.X中的urllib区别
Urllib是Python提供的一个用于操作URL的模块,在Python2.X中,有Urllib库,也有Urllib2库,在Python3.X中Urllib2合并到了Urllib中,我们爬取网页的时候 ...
- django Models cross file ---- 跨app引用文件
一.django 的跨app引用文件是通过import 来实现的,但是import 的路径查找和标准的import 不太一样,django里面更加方便了 二.例子 1.project 结构说明 [ji ...
- Apache重启报警,不存在虚拟主机目录(httpd.conf打开了一些扩展)
Apache重启时报警: AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host.example.com] does not ...
- MySQL Fabric部署
架构描写叙述: 一台主机上安装4个MySQL 服务,当中一个MySQL服务用于存储MySQL Fabric后台数据:另外3个MySQL服务用于主从架构測试.一个主+两个从. 第一部分:二进制方式安装M ...
- JavaScript判断浏览器类型及版本(新增IE11)
$(function () { var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:( ...
- Getting Started with Amazon EC2 (1 year free AWS VPS web hosting)
from: http://blog.coolaj86.com/articles/getting-started-with-amazon-ec2-1-year-free-aws-vps-web-host ...
- swift 属性和方法
属性和常量 如果创建了一个结构体的实例并赋值给一个常量,则无法修改实例的任何属性: let rangeOfFourItems = FixedLengthRange(firstValue: 0, len ...
- <unistd.h>的close(0)导致std::cout被关闭
代码如下:其中ZJ::open_max返回系统允许的打开的文件的最大个数 #include "util.h" #include <unistd.h> // int cl ...
- python学习笔记(3)--IDLE双击运行后暂停
本来想找一个python的IDE什么的,用过pycharm,vs装python插件,软件都太大了,习惯了用sublime写html,js这样的简直受不了. 一直坚持用着python自带的IDLE,不过 ...
- 轻量级分布式 RPC 框架(转)
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servi ...