-- Start

我们都知道数字可以进行加、减、乘、除等运算。那么,日期可不可以呢?答案是,日期只能进行加、减运算。

在开始操作日期之前,我们先了解一下 Oracle 支持哪些日期数据类型,如下所示:

  1. DATE
  2. TIMESTAMP
  3. TIMESTAMP WITH TIME ZONE
  4. TIMESTAMP WITH LOCAL TIME ZONE
  5. INTERVAL DAY TO SECOND
  6. INTERVAL YEAR TO MONTH

下面,我们先看一个简单的例子吧,如下所示:

  1. select SYSDATE + INTERVAL '1' DAY, SYSDATE - INTERVAL '2' DAY from dual;
  2. select SYSTIMESTAMP + INTERVAL '1' DAY, SYSTIMESTAMP - INTERVAL '2' DAY from dual;

如上所示,我们可以通过给日期加减一个时间间隔来计算日期,下面是更多的例子。

  1. 日期+ 1 年          SYSDATE + INTERVAL '1' YEAR
  2. 日期+ 1 月          SYSDATE + INTERVAL '1' MONTH
  3. 日期+ 1 日          SYSDATE + INTERVAL '1' DAY
  4. 日期+ 1 时          SYSDATE + INTERVAL '1' HOUR
  5. 日期+ 1 分          SYSDATE + INTERVAL '1' MINUTE
  6. 日期+ 1 秒          SYSDATE + INTERVAL '1' SECOND
  7. 日期+ 1 日1 时1 分    SYSDATE + INTERVAL '1 1:1' DAY TO MINUTE

如果计算的是 DATE 类型,我们还可以采用如下的方式。

  1. DATE+ 1 日          SYSDATE + 1
  2. DATE+ 1 时          SYSDATE + 1/(1*24)
  3. DATE+ 1 分          SYSDATE + 1/(1*24*60)
  4. DATE+ 1 秒          SYSDATE + 1/(1*24*60*60)
  5. DATE+ 1 日1 时1 分    SYSDATE + 1 + 1/(1*24) + 1/(1*24*60)

有时候,我们需要知道两个日期之间相隔多少天,也就是说求日期之间的时间间隔,该怎么办呢?我们很自然的想到把两个日期相减,如下所示:

  1. select (date '2015-04-10' - date '2014-03-11') from dual
  2. select (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH from dual
  3. select (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND from dual
  4. select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') from dual
  5. select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') YEAR TO MONTH from dual
  6. select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') DAY(3) TO SECOND from dual

一旦得到了时间间隔,我们就可以通过 EXTRACT 函数抽出时间间隔的组成部分。

  1. select EXTRACT(YEAR FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
  2. select EXTRACT(MONTH FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
  3. select EXTRACT(DAY FROM (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND) from dual

我们还可以抽出以下部分。

  1. YEAR
  2. MONTH
  3. DAY
  4. HOUR
  5. MINUTE
  6. SECOND
  7. TIMEZONE_HOUR
  8. TIMEZONE_MINUTE
  9. TIMEZONE_REGION
  10. TIMEZONE_ABBR

-- 更多参见:Oracle SQL 精萃

-- 声明:转载请注明出处

-- Last edited on 2015-06-19

-- Created by ShangBo on 2015-03-10

-- End

Oracle 日期加减运算的更多相关文章

  1. 类型:Oracle;问题:oracle 时间加减;结果:ORACLE 日期加减操作

    ORACLE 日期加减操作 无论是DATE还是timestamp都可以进行加减操作. 可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinter ...

  2. JAVA日期加减运算

    1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance();      calendar.setTime(new Date()) ...

  3. ORACLE日期加减【转】

    首先,感谢这个作者的辛勤汗水给我们带来的总结,因为日期函数操作对平时的使用真的是很常用,所以收藏一下以作后期使用. 原贴地址:http://www.cnblogs.com/xiao-yu/archiv ...

  4. ORACLE 日期加减操作

    无论是DATE还是timestamp都可以进行加减操作. 可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 ...

  5. mysql日期加减运算

    MySQL 日期类型MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间       日期格式                 日期范围 --------- ...

  6. Java对日期Date类进行日期加减运算,年份加减,月份加减

    package com.cy; import java.security.InvalidParameterException; import java.text.ParseException; imp ...

  7. shell 日期加减运算

    比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23   $ date -d "-1 day" +%Y ...

  8. shell 日期加减

    shell 日期加减运算   比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23   $ date -d "- ...

  9. Linux中日期的加减运算

    Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...

随机推荐

  1. Django ORM 字段合集

    AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary ...

  2. Linux中apache服务

    httpd访问控制生成共享文件vim var/www/html/cq/index.html编辑配置文件 vim /etc/httpd/conf/httpd.conf<Directory &quo ...

  3. sqlserver 事务日志

    预写式日志(Write-Ahead Logging (WAL)) --在数据写入到数据库之前,先写入到日志. 1.”Begin Tran”记录  -> 缓冲区 2. 日志             ...

  4. 安装pyautogui时报错备注

    python3.6用pip安装pyautogui时报错,找了蛮多方法都不行,最后通过安装低版本的pyautogui解决,这里备注下 报错图 解决方法: pip install pyautogui==0 ...

  5. 在MD中使用Emoji

    mark语法中支持emoji表情 具体语法是:emoji: 比如我输入 :smile: 就会出现微笑

  6. 操作集合的线程安全考虑——java

    运行场景:多个线程同时调用ArrayList存放元素 两个线程A和B,在A线程调用的时候,list中暂时还未有元素存在,此时,list的size值为0,同时A在添加元素的时候,add进了一个元素,此时 ...

  7. Git简单上传和下载

    本文参考 git-简易指南 编写 上传本地代码到gitHub仓库 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init 第二步:将项目的所有文件添加到仓库中 git a ...

  8. 查看CPU和内存,用机器指令和汇编指令编程【Debug模式】

    命令 作用 举例 R 查看,改变CPU寄存器的内容 查看:r 改写:r ax D 查看内存中的内容 d 1000:0 f E 改写内存中的内容 e 1000:0 f U 将内存中的机器指令翻译成汇编指 ...

  9. zepto.js常用操作

    zepto.js是移动端的jquery,但是并没有提供所有与jquery类似的api.Zepto设计的目的是有一个5-10k的通用库.下载并快速执行.有一个熟悉通用的API,所以你能把你主要的精力放到 ...

  10. [一点一滴.NET]进程和线程的区别

    进程是“执行中的程序”,是一个动态的概念.我们使用IDE编写的程序是静态的,静态程序经过编译形成EXE文件,运行起来之后就形成了一个进程.进程不仅仅是程序的代码,还包含了程序运行时的活动信息,通常由程 ...