當前位置:首頁 » 編程語言 » oraclesql日期相減
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclesql日期相減

發布時間: 2022-09-05 00:16:08

A. oracle中 如何算兩個時間差

select (to_date(to_char(sysdate,'hh24mi'),'hh24mi') - to_date('1820','hh24mi'))*1440 from al;

兩個日期相減的結果,單位是天,因此將兩個日期相減,然後乘以1440,得到的結果就是「分鍾數」

B. ORACEL sql語句 兩時間欄位求差

兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒):

天:

ROUND(TO_NUMBER(END_DATE - START_DATE))

小時:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)

分鍾:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)

秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

Oracle計算時間差函數 2008-08-20 10:00 兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒): 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24) 分鍾: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60) 秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60) 毫秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

外加to_date與to_char函數:

ORACLE中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from al;
一般SQL中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from al;
區別:
1、HH修改為HH24。
2、分鍾的mm修改為mi。

24 小時的形式顯示出來要用 HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;

to_date() function

1. 日期格式參數 含義說明

D 一周中的星期幾

DAY 天的名字,使用空格填充到 9 個字元

DD 月中的第幾天

DDD 年中的第幾天

DY 天的簡寫名

IW ISO 標準的年中的第幾周

IYYY ISO 標準的四位年份

YYYY 四位年份

YYY,YY,Y 年份的最後三位,兩位,一位

HH 小時,按 12 小時計

HH24 小時,按 24 小時計

MI 分

SS 秒

MM 月

Mon 月份的簡寫

Month 月份的全名

W 該月的第幾個星期

WW 年中的第幾個星期 1. 日期時間間隔操作

當前時間減去 7 分鍾的時間

select sysdate,sysdate - interval '7' MINUTE from al

當前時間減去 7 小時的時間

select sysdate - interval '7' hour from al

當前時間減去 7 天的時間

select sysdate - interval '7' day from al

當前時間減去 7 月的時間

select sysdate,sysdate - interval '7' month from al

當前時間減去 7 年的時間

select sysdate,sysdate - interval '7' year from al

時間間隔乘以一個數字

select sysdate,sysdate - 8 *interval '2' hour from al

2. 日期到字元操作

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from al

參考 oracle 的相關關文檔 (ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

3. 字元到日期操作

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from al

具體用法和上面的 to_char 差不多。

4.TO_NUMBER
使用TO_NUMBER函數將字元轉換為數字
TO_NUMBER(char[, '格式'])

數字格式格式
9 代表一個數字
0 強制顯示0
$ 放置一個$符
L 放置一個浮動本地貨幣符
. 顯示小數點
, 顯示千位指示符

oracle中的to_date參數含義

1.日期格式參數含義說明
D 一周中的星期幾
DAY 天的名字,使用空格填充到9個字元
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO標準的年中的第幾周
IYYY ISO標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按12小時計
HH24 小時,按24小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期 1.日期時間間隔操作
當前時間減去7分鍾的時間
select sysdate,sysdate - interval 』7』 MINUTE from al
當前時間減去7小時的時間
select sysdate - interval 』7』 hour from al
當前時間減去7天的時間
select sysdate - interval 』7』 day from al
當前時間減去7月的時間
select sysdate,sysdate - interval 』7』 month from al
當前時間減去7年的時間
select sysdate,sysdate - interval 』7』 year from al
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval 』2』 hour from al
2.日期到字元操作
select sysdate,to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm-dd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-ddd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm iw-d hh:mi:ss』) from al
參考oracle的相關關文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字元到日期操作
select to_date(』2003-10-17 21:15:37』,』yyyy-mm-dd hh24:mi:ss』) from al
具體用法和上面的to_char差不多。
4. trunk/ ROUND函數的使用
select trunc(sysdate ,』YEAR』) from al
select trunc(sysdate ) from al
select to_char(trunc(sysdate ,』YYYY』),』YYYY』) from al
5.oracle有毫秒級的數據類型
--返回當前時間 年月日小時分秒毫秒
select to_char(current_timestamp(5),』DD-MON-YYYY HH24:MI:SSxFF』) from al;
--返回當前時間的秒毫秒,可以指定秒後面的精度(最大=9)
select to_char(current_timestamp(9),』MI:SSxFF』) from al;
6.計算程序運行的時間(ms)
declare
type rc is ref cursor;
l_rc rc;
l_mmy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000 loop
open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i;
fetch l_rc into l_mmy;
close l_rc;
end loop;
dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||' seconds ...' );
end;

C. oracle 怎麼將當前時間減一年

具體操作步驟如下:

1、首先,打開sql,連接到oracle資料庫,使用sql語句創建測試表,如下圖所示,然後進入下一步。

D. 查詢 Oracle 資料庫數據 sql 語句 , , 時間相減 , ,

可以通過to_date方式統一時間樣式,之後通過做差的形式來進行值獲取時間差,。
sql:SELECT to_date(to_char(sysdate,'yyyy-mm-dd')||' 23:59:59','yyyy-mm-dd hh24:mi:ss')- to_date(to_char(sysdate,'yyyy-mm-dd')||' 22:22:22','yyyy-mm-dd hh24:mi:ss') FROM DUAL;
備註:時間比較是距離1970年越遠的那麼時間就越大。

E. oracle中怎麼得到日期相減除去周末後的天數

以2015年12月1日至2015年12月31日為例。其中周六和周日算周末。

查日歷可得,2015年12月1日至2015年12月31日期間,周六周日的天數合計8天,31-8=23,與語句所得結果一致。

F. sql語句怎麼來對日期進行相加減

相減是計算二個時間的差值,這個應該有函數,好像是 DateDiff ,具體用法比較簡單:DateDiff(計算的時間值,計算的開始時間,計算的結束時間) ,其中「計算的時間值 」包括秒(s)、分(n)、時(h)、日(d)、月(m)、年(yyyy)。
但二個日期或時間相加是什麼?好像沒有這樣的運算吧?也可能是我孤陋寡聞吧。

G. oracle日期相減的問題

設需要找昨天的數據,表名為 a ,日期欄位為 rq
select * from a where trunc(sysdate-1)=trunc(rq)

trunc 可以拿到時間的日期部分

具體你根據你的情況完善一下。

H. 請教oracle中用sql時間相減的問題

這個問題。。。。
給你個詳細的回答吧 以後就不再擔憂這方面的任何問題

Oracle計算時間差表達式

--獲取兩時間的相差豪秒數
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒數 FROM DUAL;
/*
相差豪秒數
----------
86401000
1 row selected
*/

--獲取兩時間的相差秒數
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒數 FROM DUAL;
/*
相差秒數
----------
86401
1 row selected
*/

--獲取兩時間的相差分鍾數
select ceil(((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss'))) * 24 * 60) 相差分鍾數 FROM DUAL;
/*
相差分鍾數
----------
1441
1 row selected
*/

--獲取兩時間的相差小時數
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24) 相差小時數 FROM DUAL;
/*
相差小時數
----------
25
1 row selected
*/

--獲取兩時間的相差天數
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss'))) 相差天數 FROM DUAL;
/*
相差天數
----------
2
1 row selected
*/

----------------------------------------
註:天數可以2個日期直接減,這樣更加方便
----------------------------------------

--獲取兩時間月份差
select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) * 12 +
EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
from al;
/*
MONTHS
----------
13
1 row selected
*/

--------------------------------------
註:可以使用months_between函數,更加方便
--------------------------------------

--獲取兩時間年份差
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from al;
/*
YEARS
----------
1
1 row selected

I. oral資料庫日期相減

oracle中兩個date類型相減後得到的數的單位為天(有小數)

--304.340509259259天
SELECTTO_DATE('2014112009:10:22','yyyymmddhh24:mi:ss')-
TO_DATE('2014012001:00:02','yyyymmddhh24:mi:ss')
FROMDUAL;
--7304.17222222222小時
SELECT(TO_DATE('2014112009:10:22','yyyymmddhh24:mi:ss')-
TO_DATE('2014012001:00:02','yyyymmddhh24:mi:ss'))*24
FROMDUAL;
--438250.333333333分鍾
SELECT(TO_DATE('2014112009:10:22','yyyymmddhh24:mi:ss')-
TO_DATE('2014012001:00:02','yyyymmddhh24:mi:ss'))*24*60
FROMDUAL;
--26295020秒
SELECT(TO_DATE('2014112009:10:22','yyyymmddhh24:mi:ss')-
TO_DATE('2014012001:00:02','yyyymmddhh24:mi:ss'))*24*60*60
FROMDUAL;