Oracle SQL Saat Farkı
Merhaba,
Oracle SQL’de iki saat arasındaki farkı hesaplamak için to_char ve to_date fonksiyonlarından yararlanabilirsiniz.
Elimizde bulunan tarih objesi içerisinden saati saniye cinsinde ayırmak için to_char(sysdate, ‘sssss’) yöntemini kullanabilirsiniz. Bu fonksiyon bize gece yarısından itibaren geçen saniye süresini sayı cinsinden vermektedir.
1 2 3 |
select to_char(sysdate, 'sssss') from dual; |
TO_CHAR(SYSDATE,’SSSSS’)
————————
42881
1 row selected.
to_char fonksiyonunun bu özelliğinden yararlanarak elimizde bulunan iki adet saati saniye cinsinden sayıya çevirip farklarını alabiliriz. Elde edilen sonuç iki zaman dilimi arasındaki saniye farkını vermektedir. Saniyeyi tekrar tarihe çevirmek için ise to_char fonksiyonunda kullandığımız gibi to_date fonksiyonunda da aynı yöntem mevcuttur.
1 2 3 |
select to_char(to_date(42881, 'sssss'), 'hh24:mi:ss') from dual; |
TO_CHAR(TO_DATE(42881,’SSSSS’),’HH24:MI:SS’)
——————————————–
11:54:41
1 row selected.
Gördüğünüz üzere aynı yöntemi kullnarak çift taraflı dönüşüm yapılabilmektedir. Bu noktadan sonra iki zamanı saniye cinsine çevirip aralarındaki farkın mutlak değerini alıp tekrar tarih objesine dönüştürerek aradki zaman farkını saat cinsinden bulabiliriz.
1 2 3 4 5 6 7 8 |
SELECT TO_CHAR (TO_DATE (ABS (bitis_zaman - baslangic_zaman), 'sssss'), 'hh24:mi') as saat_farki FROM (SELECT TO_NUMBER (TO_CHAR (TO_DATE ('10:55', 'HH24:MI'), 'SSSSS')) baslangic_zaman, TO_NUMBER (TO_CHAR (TO_DATE ('19:24', 'HH24:MI'), 'SSSSS')) bitis_zaman FROM DUAL); |
ZAMAN_FARKI
———–
08:29
1 row selected.