Oracle 日期加减运算
-- Start
我们都知道数字可以进行加、减、乘、除等运算。那么,日期可不可以呢?答案是,日期只能进行加、减运算。
在开始操作日期之前,我们先了解一下 Oracle 支持哪些日期数据类型,如下所示:
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- TIMESTAMP WITH LOCAL TIME ZONE
- INTERVAL DAY TO SECOND
- INTERVAL YEAR TO MONTH
下面,我们先看一个简单的例子吧,如下所示:
- select SYSDATE + INTERVAL '1' DAY, SYSDATE - INTERVAL '2' DAY from dual;
- select SYSTIMESTAMP + INTERVAL '1' DAY, SYSTIMESTAMP - INTERVAL '2' DAY from dual;
如上所示,我们可以通过给日期加减一个时间间隔来计算日期,下面是更多的例子。
- 日期+ 1 年 SYSDATE + INTERVAL '1' YEAR
- 日期+ 1 月 SYSDATE + INTERVAL '1' MONTH
- 日期+ 1 日 SYSDATE + INTERVAL '1' DAY
- 日期+ 1 时 SYSDATE + INTERVAL '1' HOUR
- 日期+ 1 分 SYSDATE + INTERVAL '1' MINUTE
- 日期+ 1 秒 SYSDATE + INTERVAL '1' SECOND
- 日期+ 1 日1 时1 分 SYSDATE + INTERVAL '1 1:1' DAY TO MINUTE
如果计算的是 DATE 类型,我们还可以采用如下的方式。
- DATE+ 1 日 SYSDATE + 1
- DATE+ 1 时 SYSDATE + 1/(1*24)
- DATE+ 1 分 SYSDATE + 1/(1*24*60)
- DATE+ 1 秒 SYSDATE + 1/(1*24*60*60)
- DATE+ 1 日1 时1 分 SYSDATE + 1 + 1/(1*24) + 1/(1*24*60)
有时候,我们需要知道两个日期之间相隔多少天,也就是说求日期之间的时间间隔,该怎么办呢?我们很自然的想到把两个日期相减,如下所示:
- select (date '2015-04-10' - date '2014-03-11') from dual
- select (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH from dual
- select (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND from dual
- select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') from dual
- select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') YEAR TO MONTH from dual
- select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') DAY(3) TO SECOND from dual
一旦得到了时间间隔,我们就可以通过 EXTRACT 函数抽出时间间隔的组成部分。
- select EXTRACT(YEAR FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
- select EXTRACT(MONTH FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
- select EXTRACT(DAY FROM (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND) from dual
我们还可以抽出以下部分。
- YEAR
- MONTH
- DAY
- HOUR
- MINUTE
- SECOND
- TIMEZONE_HOUR
- TIMEZONE_MINUTE
- TIMEZONE_REGION
- TIMEZONE_ABBR
-- 更多参见:Oracle SQL 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-06-19
-- Created by ShangBo on 2015-03-10
-- End
Oracle 日期加减运算的更多相关文章
- 类型:Oracle;问题:oracle 时间加减;结果:ORACLE 日期加减操作
ORACLE 日期加减操作 无论是DATE还是timestamp都可以进行加减操作. 可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinter ...
- JAVA日期加减运算
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- ORACLE日期加减【转】
首先,感谢这个作者的辛勤汗水给我们带来的总结,因为日期函数操作对平时的使用真的是很常用,所以收藏一下以作后期使用. 原贴地址:http://www.cnblogs.com/xiao-yu/archiv ...
- ORACLE 日期加减操作
无论是DATE还是timestamp都可以进行加减操作. 可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 ...
- mysql日期加减运算
MySQL 日期类型MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 --------- ...
- Java对日期Date类进行日期加减运算,年份加减,月份加减
package com.cy; import java.security.InvalidParameterException; import java.text.ParseException; imp ...
- shell 日期加减运算
比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23 $ date -d "-1 day" +%Y ...
- shell 日期加减
shell 日期加减运算 比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23 $ date -d "- ...
- Linux中日期的加减运算
Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...
随机推荐
- sqlserver 索引进阶(上)
参考原文:http://www.cnblogs.com/tjy9999/p/4494662.html 2. 非聚集索引 SET STATISTICS io ON SET STATISTICS time ...
- STL-----c++标准模板
一.排序和检索 1.sort(v.begin,v.end) 2.lower_bound(v.begin,v.end,x)
- my.梦幻手游_XP
1.http://my.netease.com/thread-459708-1-1.html 2. 3.
- 使用vue-router beforEach实现判断用户登录跳转路由筛选功能
在开发webApp的时候,考虑到用户体验,经常会把不需要调用个人数据的页面设置成游客可以访问,而当用户进入到一些需要个人数据的,例如购物车,个人中心,我的钱包等等,在进行登录的验证判断,如果判断已经登 ...
- 垃圾收集GC
一.引用计数法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不能再被使用的.引用计数法实现简单,判定效率也很高,但是它很 ...
- leetcode 181 Employees Earning More Than Their Managers 不会分析的数据库复杂度
https://leetcode.com/problems/employees-earning-more-than-their-managers/description/ 老师上课没分析这些的复杂度, ...
- Oracle SQL Tuning Advisor 测试
如果面对一个需要优化的SQL语句,没有很好的想法,可以先试试Oracle的SQL Tuning Advisor. SQL> select * from v$version; BANNER --- ...
- (转)AIX 5.3安装SSH .
AIX 5.3安装SSH . 原文:http://blog.csdn.net/chunhua_love/article/details/12004845 环境:OS:AIX 5.3SSH: opens ...
- 什么是JavaScript Souce Map
第一部分 我们经常可以看到后缀名为.map的文件,比如我们下载得到bootstrap的css文件,如下所示: 不难理解bootstrap.css. bootstrap.min.css.等这些常规的代码 ...
- C++(SOCKET)简单爬虫制作
先给出代码:(我使用的是VS编译器,需要在项目->project属性-> #include <iostream> #include <stdio.h> #inclu ...