oraclesql計算時間差-ag真人国际官网
『壹』 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;
『貳』 請教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
『叄』 用sql語句怎麼寫時間差少於18秒
sql中有個時間函數叫datediff(),用來計算時間差, 可以這樣計算出差值,然後將差值轉換成秒進行比較.
還有一種變通的方法,利用dateadd()函數,他表示在一個日期值的基礎上加上一個間隔,返回另一個日期值,你可以通過這個函數,給第一個日期加上18秒,然後和第二個日期比較.
datadiff(operate_date, dateadd(operate_date,00:00:18)))>0 這樣來判斷,
(00:00:18這個寫法不知道有沒有錯,很久沒寫過時間類型的東西了,望見諒).
『肆』 sql時間差的計算
這是oracle是sql2000的?
給個oracle的例子:
select floor(to_number(to_date(20110621100000,'yyyymmdd hh24:mi:ss')-to_date(20110621095505,'yyyymmdd hh24:mi:ss'))*24*60) from al;