Jak przekonwertować EVENT_DATE_B - EVENT_DATE_A
, która jest liczbą dni, które mają być ciągami w formacie HH:MM
?Konwersja różnicy czasu do podanego formatu w Oracle
7
A
Odpowiedz
4
Jeśli daty są różnią się tylko część czasu można użyć przedział dzień drugi. Na przykład:
SQL> select (to_date('25.12.12 15:37:32', 'DD.MM.YY HH24:MI:SS')
2 - to_date('25.12.12 12:45:45', 'DD.MM.YY HH24:MI:SS')) day(0) to second(0) as Time
3 from dual
4 ;
TIME
-------------
+0 02:51:47
Ale oczywiście nie zawsze tak będzie. Więc można napisać długą zapytanie do obliczania różnych części czasu, ale myślę, że pójdę z tej prostej funkcji:
SQL> create or replace function DaysToTime(p_val in number)
2 return varchar2
3 is
4 l_hours number;
5 l_minutes number;
6 l_seconds number;
7 begin
8 l_Hours := 24 * p_val;
9 l_minutes := (l_hours - trunc(l_hours)) * 60;
10 l_seconds := (l_minutes - trunc(l_minutes)) * 60;
11 return to_char(trunc(l_hours), 'fm09') ||':'||
12 to_char(trunc(l_minutes), 'fm09')||':'||
13 to_char(trunc(l_seconds), 'fm09');
14 end;
15/
Function created
a teraz zapytanie będzie:
SQL> select DaysToTime(to_date('25.12.12 15:37:32', 'DD.MM.YY HH24:MI:SS')
2 - to_date('25.12.12 12:45:45', 'DD.MM.YY HH24:MI:SS')) as Time
3 from dual
4 ;
TIME
----------
02:51:47
1
select 24 * (EVENT_DATE_B - EVENT_DATE_A) || ':' || '00'
from your_table
4
Innym podejściem (jeden zapytanie może być w różnych dniach):
with tt as (
select numToDsinterval((EVENT_DATE_B - EVENT_DATE_A), 'DAY') dsint
from t)
select (extract(day from dsint)*24)+extract(hour from dsint) ||
':' ||extract(minute from dsint)
from tt
+0
+1 Oczywiście. Z jakiegoś powodu nie myślałem o "NumToDSInterval" :) –
1
Myślę, że musisz sprawdzić liczbę dni między datą1 a datą2, a następnie odjąć tę różnicę od daty2 i przekształcić datę końcową na format. Kopiuj/wklej i zobaczyć wyjście:
Select date2, days_between, to_char(date2-days_between, 'mm-dd-yyyy hh24:mi:ss') end_date
From
(
Select sysdate date2
, trunc(sysdate)-to_date('20-DEC-2012') days_between --'20-DEC' is start_date
From dual
)
/
Powiązane problemy
- 1. Konwersja czasu do formatu 24-godzinnego w JavaScript
- 2. Konwersja Epoki sekund do daty i formatu czasu w Javie
- 3. Konwersja do formatu waluty
- 4. Błąd obliczania różnicy czasu
- 5. obliczanie różnicy czasu w R
- 6. Konwersja timestamp/data od czasu UTC do EST Oracle SQL
- 7. Konwersja płótna do formatu PDF
- 8. data Konwersja do formatu RRRRMM
- 9. Konwersja ciąg do formatu daty w Pythonie
- 10. Konwersja formatu szeregowego daty FULL Excel na znacznik czasu Unix
- 11. Konwersja formatu audio
- 12. Konwersja formatu obrazu w pytonie
- 13. Konwersja formatu daty JavaScript do żądanego formatu PHP
- 14. Oczekiwano formatu czasu EventLogQuery?
- 15. Konwersja formatu daty do celu C
- 16. Sprawdzanie formatu czasu Pythona
- 17. Konwersja czasu Ruby do C#
- 18. Zapytanie Oracle dla formatu Data
- 19. Konwersja wielowymiarowej tabeli ctab() do formatu LaTeX
- 20. Uzyskiwanie różnicy czasu między dwiema wartościami
- 21. Konwersja znacznika czasu w Oracle dla YYYY-MM-DD GG: MM: format SS
- 22. Obliczanie różnicy czasu między indeksami Panda DataFame
- 23. Konwersja czasu do DateTime w C#
- 24. Konwersja czasu lokalnego do UTC w Railsach
- 25. Konwersja uniksowy znacznik czasu do datetime
- 26. Konwersja kropli oracle do typu xml
- 27. Konwersja daty XSD xs: DATETIME do Oracle Data
- 28. Konwersja wierszy do formatu XML w SQL Server
- 29. Konwersja do formatu JSON String obiektu w C#, użyj Json.NET
- 30. Konwersja formatu realną ścieżkę do Uri w android
'EVENT_DATE_B - EVENT_DATE_A' nie może być liczbą całkowitą – turbanoff
To nie jest dobre dla czegoś takiego jak' wybrać 24 * (TO_DATE ('25 .12.12 15:37:32' , ' DD.MM.YY HH24: MI: SS ') - to date ('25 .12.12 12:45:45', 'DD.MM.YY HH24: MI: SS')) || ":" || '00' from dual' – lexeme