oracle計算兩個日期的時間差時分秒
Oracle
函式可以實現諸多的功能,下面就介紹使用Oracle
函式計算時間差的實現方法。
兩個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)
例子:
select ROUND(TO_NUMBER(
to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') - to_date('2012-05-11 10:37:40','yyyy-MM-dd hh24:mi:ss'))*24*60*60)
from dual
select ROUND(TO_NUMBER(to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss')
- to_date('2013-01-16 00:00:00','yyyy-MM-dd hh24:mi:ss'))*24*60*60) from dual
to_date
如何取得毫秒?
由於oracle
中date
型別只支援到秒,不支援到毫秒,所以to_date()
不能取到毫秒。 如果要取到毫秒,oracle 9i
以上版本,可以使用timestamp
型別,是date
的擴充套件型別,能支援到毫秒,毫秒的顯示精度是6位,不過有效位是3位,即最大值達到999,滿1000ms就進為1s。而與to_date()
對應的轉換函式可以使用to_timestamp()
。 select to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as mydate from dual;
如果想將timestamp
又轉換成date
型別,可以使用cast()
函式,但得到的date
型別沒有了毫秒值。如下: select cast(to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as date) as mydate from dual;
Oracle時間型別date,timestamp時間差計算
Oracle
的時間型別有兩種date
和timestamp
. date
精確到秒,timestamp
精確到毫秒.
1.計算date
型別的時間差
可以先把年,月,日,小時,分,秒用to_char
函式拆分出來,再用to_number
函式轉換成數值型別.有了這些單獨分開的時間就好辦了.就再一個個的去減,記得考慮單位換算就行.比如都轉換成小時或分之類的
示例:
declare
v_date date;
v_year int;
v_month int;
v_day int;
v_hour int;
v_minute int;
v_second int;
begin
v_date := sysdate;
v_year :=to_number( to_char(v_date,'yyyy'));
--月,日,小時,分,秒的拆分方法和上面年的一樣,只要把yyyy分別替換成mm,dd,hh,mi,ss就行了
end;
--timestamp型別的時間也可以用同樣的方法,但是這隻能精確到秒,後面的毫秒就忽略掉了
2.計算timestamp
型別的時間差
用to_char
函式不能拆分出毫秒來.可以用另外一個函式extract
示例
declare
v_t timestamp;
v_year int;
v_s float;
begin
v_t := systimestamp;
v_year := extract(year from v_t);
--月,日,小時,分的拆分方法和上面的年一樣只要把year改成month,day,hour,minute就行.
v_s :=extract(second from v_t);--注意,這裡雖然也只能拆分到秒,但這裡的秒是帶小數點的,小數點後面的就是毫秒了.
end;
Oracle中兩個TIMESTAMP時間型別的差
首先需要先轉換成char
型別
to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')
然後在轉換為date
TO_DATE((to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')),'yyyy-mm-dd hh24:mi:ss')
再將兩個date
型別相減
to_number(
(
TO_DATE((to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')),'yyyy-mm-dd hh24:mi:ss') -
TO_DATE(to_char(t.servertime, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
)
)* 86400
as miao
相關文章
- JavaScript計算兩個時間點之間的時間差JavaScript
- excel日期加減計算方法 excel計算日期時間差Excel
- 兩個時間戳的時間差時間戳
- 時間差計算
- ORACLE計算2個時間段相差時間小時、分、秒Oracle
- 去掉時間字串的時分秒字串
- 時間格式化大小寫含義(Java 計算時間差以及比較日期大小 )Java
- Dynamics CRM使用計算欄位自動計算兩個時間欄位的天數差
- JAVA中計算兩個日期時間的差值竟然也有這麼多門道Java
- Java中計算兩個日期間的天數Java
- JavaScript 計算兩個時間相差天數JavaScript
- ORACLE 計算2個日期之間的天數Oracle
- Android 計算倆個日期差Android
- Java 中,如何計算兩個日期之間的差距?Java
- python程式計算執行時間差Python
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- php 計算兩個日期之間相差多少天PHP
- Oracle日期時間範圍查詢Oracle
- js計算兩個日期相差的天數(不包含小時分鐘秒)JS
- Python秒轉換成時間(時分秒)Python
- mysql查詢中時間、日期加減計算MySql
- Python + SeaTable | 計算兩個日期間的工作日天數Python
- sql server 計算兩個時間 相差的 幾天幾時幾分幾秒SQLServer
- 6 個 Python 的日期時間庫Python
- hive如何把時分秒時間變成15分鐘切片時間Hive
- python獲取當前日期 年月日時分秒Python
- 計算時間差,頁面倒數計時,安卓與ios相容問題安卓iOS
- iOS日期時間iOS
- 日期和時間
- 日期時間類
- 查詢日期帶時分秒00:00:00 23:59:59
- Java日期時間API系列38-----一種高效的工作日計算計算方法JavaAPI
- PHP時間計算PHP
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- python中關於時間和日期函式的常用計算總結Python函式
- JS-計算日期差值;計算日期之間的月數JS
- Python獲取當前日期和日期差計算Python
- 日期和時間格式