Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle sql znajdź różnicę czasu (oba czasy w ciągu)

Masz wadliwy projekt .

  • Nigdy nie należy przechowywać daty wartość jako ciąg .
  • DATA zawsze zawiera zarówno elementy daty, jak i godziny, więc nie ma potrzeby oddzielnego przechowywania elementu czasu.

W każdym razie, jako obejście, musisz najpierw przekonwertować ciąg na datę, a następnie znaleźć czas trwania w sekundach , dodaj sekundy do TRUNC(SYSDATE) , reszta to proste formatowanie daty .

Na przykład

SQL> WITH sample_data AS(
  2  SELECT '21:30:03' START_TIME, '21:34:11' END_TIME FROM dual
  3  )
  4  SELECT start_time,
  5    end_time,
  6    TO_CHAR (TRUNC (SYSDATE) + (to_date(end_time, 'HH24:MI:SS') -
  7                                to_date(start_time, 'HH24:MI:SS')
  8                               ) , 'hh24:mi:ss' ) duration
  9  FROM sample_data;

START_TI END_TIME DURATION
-------- -------- --------
21:30:03 21:34:11 00:04:08

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wiele partycji na stole?

  2. Jak otworzyć procedurę składowaną i edytować ją w SQL*Plus?

  3. ORA-06553:PLS-801:błąd wewnętrzny [55018] podczas testowania funkcji zwracającej ROWTYPE

  4. W Oracle SQL:Jak wstawić bieżącą datę + czas do tabeli?

  5. Wybierz i wstaw przez dblink