Oracle 日期加減運算

2021-09-07 15:32:46 字數 2904 閱讀 3313

-- start

我們都知道數字可以進行加、減、乘、除等運算。那麼,日期可不可以呢?答案是,日期只能進行加、減運算。

在開始操作日期之前,我們先了解一下 oracle 支援哪些日期資料型別,如下所示:

[sql]view plain

copy

date  

timestamp  

timestamp with time zone  

timestamp with local time zone  

interval day to second  

interval year to month  

下面,我們先看乙個簡單的例子吧,如下所示:

[sql]view plain

copy

select sysdate + interval '1' day, sysdate - interval '2' day from dual;  

select systimestamp + interval '1' day, systimestamp - interval '2' day from dual;  

如上所示,我們可以通過給日期加減乙個時間間隔來計算日期,下面是更多的例子。

[sql]view plain

copy

日期+ 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 型別,我們還可以採用如下的方式。

[sql]view plain

copy

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)  

有時候,我們需要知道兩個日期之間相隔多少天,也就是說求日期之間的時間間隔,該怎麼辦呢?我們很自然的想到把兩個日期相減,如下所示:

[sql]view plain

copy

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 函式抽出時間間隔的組成部分。

[sql]view plain

copy

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  

我們還可以抽出以下部分。

[sql]view plain

copy

year  

month  

day  

hour  

minute  

second  

timezone_hour  

timezone_minute  

timezone_region  

timezone_abbr  

-- last edited on 2015-06-19

-- created by shangbo on 2015-03-10

-- end

Oracle 日期加減

加法 select sysdate,add months sysdate,12 from dual 加1年 select sysdate,add months sysdate,1 from dual 加1月 select sysdate,to char sysdate 7,yyyy mm dd hh...

Python日期加減運算

python中的time與datetime基本是你中有我,我中有你的關係,有時只想操作一部分反而不那麼方便。在碼 的過程中,需要從某個日期往前或者往後推移,手動計算又要考慮跨月份的問題。經過閱讀python官方文件,找到了日期加減推移運算的方法。乙個日期可以和乙個日期增量相加減。那麼,推算日期 時間...

ORACLE 日期加減操作

無論是date還是timestamp都可以進行加減操作。可以對當前日期加年 月 日 時 分 秒,操作不同的時間型別,有三種方法 1 使用內建函式numtodsinterval增加小時,分鐘和秒 2 加乙個簡單的數來增加天 3 使用內建函式add months來增加年和月 例 對當前日期增加乙個小時 ...