Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Oracle/SQL jak uzyskac roznice czasu w sekundach

2,584 views
Skip to first unread message

rok...@o2.pl

unread,
May 29, 2008, 8:25:17 AM5/29/08
to
Witam,
Czy ktos moglby podpowiedziec jak odjac od sysdate inna w formacie MM/
DD/YYYY HH24/MI/SS, a wynik wyswietlic w sekundach?

Maseł

unread,
May 29, 2008, 9:35:22 AM5/29/08
to


Wynik odejmowania dwoch dat jest wyrazony w dniach...

Tak wiec wynik rzedu 0,5 oznacza 12 godzin, 1/1440 oznacza minute a
1/86400 oznacza sekunde (zamiane na ulamek zwykly zostawiam Ci jako
zadanie domowe).

select (to_date ('2008-05-29 15:20:20','YYYY-MM-DD HH24:MI:SS')-to_date
('2008-05-29 15:20:00','YYYY-MM-DD HH24:MI:SS'))*86400
from dual;

A moze by tak jeszcze pobawis sie typami interwalowymi (od 9i w gore)?

Pozdro

Maseł

Paweł Filipiak

unread,
May 29, 2008, 9:36:39 AM5/29/08
to
1. data nie ma żadnego formatu!. To, co widzisz w określonym formacie,
to zmienna typu date skonwertowana do stringa (jawnie lub niejawnie).
Wewnętrznie data jest przechowywana jako liczba.
2. W bazie Oracle domyslnym "ziarnem" operatorów dodawania/odejmowania
jest doba, czyli:

select sydate-d from dual;

da Ci róznicę między czasem systemowym i wartością daty w zmiennej (lub
kolumnie) d wyrażoną w dobach. Jeżeli chcesz to zamienić na sekundy
wystraczy wynik przemnozyc przez liczbę sekund w dobie i masz.

Jeżeli masz coś, co jest w formacie MM/DD/YYYY HH24/MI/SS (czyli zapewne
string), to trzeba to najpierw skonwertowac do daty, czyli:
select sysdate - to_date('12/31/2008 18/25/51','MM/DD/YYYY HH24:MI:SS')
from dual;


--
pozdrawiam,
Paweł Filipiak

0 new messages