Oracle計(jì)算時(shí)間差常用函數(shù)
兩個(gè)Date類型字段:START_DATE,END_DATE,計(jì)算這兩個(gè)日期的時(shí)間差(分別以天,小時(shí),分鐘,秒,毫秒):
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小時(shí):
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計(jì)算時(shí)間差函數(shù) 2008-08-20 10:00 兩個(gè)Date類型字段:START_DATE,END_DATE,計(jì)算這兩個(gè)日期的時(shí)間差(分別以天,小時(shí),分鐘,秒,毫秒): 天:
ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時(shí): 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函數(shù):
ORACLE中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from dual;
一般SQL中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from dual;
區(qū)別:
1、HH修改為HH24。
2、分鐘的mm修改為mi。
24 小時(shí)的形式顯示出來(lái)要用 HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; to_date() function
1. 日期格式參數(shù) 含義說(shuō)明
D 一周中的星期幾
DAY 天的名字,使用空格填充到 9 個(gè)字符
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡(jiǎn)寫名
IW ISO 標(biāo)準(zhǔn)的年中的第幾周
IYYY ISO 標(biāo)準(zhǔn)的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,兩位,一位
HH 小時(shí),按 12 小時(shí)計(jì)
HH24 小時(shí),按 24 小時(shí)計(jì)
MI 分
SS 秒
MM 月
Mon 月份的簡(jiǎn)寫
Month 月份的全名
W 該月的第幾個(gè)星期
WW 年中的第幾個(gè)星期 1. 日期時(shí)間間隔操作
當(dāng)前時(shí)間減去 7 分鐘的時(shí)間
select sysdate,sysdate - interval '7' MINUTE from dual
當(dāng)前時(shí)間減去 7 小時(shí)的時(shí)間
select sysdate - interval '7' hour from dual
當(dāng)前時(shí)間減去 7 天的時(shí)間
select sysdate - interval '7' day from dual
當(dāng)前時(shí)間減去 7 月的時(shí)間
select sysdate,sysdate - interval '7' month from dual
當(dāng)前時(shí)間減去 7 年的時(shí)間
select sysdate,sysdate - interval '7' year from dual
時(shí)間間隔乘以一個(gè)數(shù)字
select sysdate,sysdate - 8 *interval '2' hour from dual
2. 日期到字符操作
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
參考 oracle 的相關(guān)關(guān)文檔 (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 dual
具體用法和上面的 to_char 差不多。
4.TO_NUMBER
使用TO_NUMBER函數(shù)將字符轉(zhuǎn)換為數(shù)字
TO_NUMBER(char[, '格式'])
數(shù)字格式格式
9 代表一個(gè)數(shù)字
0 強(qiáng)制顯示0
$ 放置一個(gè)$符
L 放置一個(gè)浮動(dòng)本地貨幣符
.顯示小數(shù)點(diǎn)
,顯示千位指示符
oracle中的to_date參數(shù)含義
1.日期格式參數(shù)含義說(shuō)明
D 一周中的星期幾
DAY 天的名字,使用空格填充到9個(gè)字符
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡(jiǎn)寫名
IW ISO標(biāo)準(zhǔn)的年中的第幾周
IYYY ISO標(biāo)準(zhǔn)的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,兩位,一位
HH 小時(shí),按12小時(shí)計(jì)
HH24 小時(shí),按24小時(shí)計(jì)
MI 分
SS 秒
MM 月
Mon 月份的簡(jiǎn)寫
Month 月份的全名
W 該月的第幾個(gè)星期
WW 年中的第幾個(gè)星期 1.日期時(shí)間間隔操作
當(dāng)前時(shí)間減去7分鐘的時(shí)間
select sysdate,sysdate - interval '7' MINUTE from dual
當(dāng)前時(shí)間減去7小時(shí)的時(shí)間
select sysdate - interval '7' hour from dual
當(dāng)前時(shí)間減去7天的時(shí)間
select sysdate - interval '7' day from dual
當(dāng)前時(shí)間減去7月的時(shí)間
select sysdate,sysdate - interval '7' month from dual
當(dāng)前時(shí)間減去7年的時(shí)間
select sysdate,sysdate - interval '7' year from dual
時(shí)間間隔乘以一個(gè)數(shù)字
select sysdate,sysdate - 8 *interval '2' hour from dual
2.日期到字符操作
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
參考oracle的相關(guān)關(guān)文檔(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 dual
具體用法和上面的to_char差不多。
4. trunk/ ROUND函數(shù)的使用
select trunc(sysdate ,'YEAR') from dual select trunc(sysdate ) from dual select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
5.oracle有毫秒級(jí)的數(shù)據(jù)類型
--返回當(dāng)前時(shí)間 年月日小時(shí)分秒毫秒
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
--返回當(dāng)前時(shí)間的秒毫秒,可以指定秒后面的精度(最大=9)
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
6.計(jì)算程序運(yùn)行的時(shí)間(ms)
declare type rc is ref cursor; l_rc rc; l_dummy 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_dummy; close l_rc; end loop; dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||' seconds ...' ); end;
總結(jié)
以上就是本文關(guān)于Oracle計(jì)算時(shí)間差常用函數(shù)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱:oracle 虛擬專用數(shù)據(jù)庫(kù)詳細(xì)介紹 oracle 數(shù)據(jù)庫(kù)啟動(dòng)階段分析 Oracle RMAN自動(dòng)備份控制文件方法介紹等。感謝大家對(duì)腳本之家的支持!
相關(guān)文章
SQL Server、Oracle和MySQL判斷NULL的方法
本文講述SQL Server、Oracle、MySQL查出值為NULL的替換,在SQL Server Oracle MySQL當(dāng)數(shù)據(jù)庫(kù)中查出某值為NULL怎么辦2012-11-11oracle數(shù)據(jù)庫(kù)tns配置方法詳解
TNS是Oracle Net的一部分,專門用來(lái)管理和配置Oracle數(shù)據(jù)庫(kù)和客戶端連接的一個(gè)工具,在大多數(shù)情況下客戶端和數(shù)據(jù)庫(kù)要通訊,必須配置TNS,下面看一如何配置它吧2013-12-12Oracle游標(biāo)使用參考語(yǔ)句實(shí)例解析
這篇文章主要介紹了Oracle游標(biāo)使用參考語(yǔ)句實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11oracle刪除數(shù)據(jù)但表空間占用率沒(méi)有減小的情況
這篇文章主要介紹了oracle刪除數(shù)據(jù)但表空間占用率沒(méi)有減小的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Oracle占用內(nèi)存過(guò)高的問(wèn)題及解決
這篇文章主要介紹了Oracle占用內(nèi)存過(guò)高的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12[Oracle] Data Guard CPU/PSU補(bǔ)丁安裝詳細(xì)教程
以下是對(duì)Data Guard CPU/PSU補(bǔ)丁安裝的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07