sql >> Databáze >  >> RDS >> Oracle

Oracle SQL Hodiny Rozdíl mezi daty v HH:MM:SS

Za předpokladu, že sloupce jsou již data, a proto převod do az řetězců, který provádíte, je zbytečný a že rozdíl bude vždy menší než jeden den, můžete udělat:

to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')

Toto dostane rozdíl mezi daty jako zlomek dne; zajišťuje, že je pozitivní pomocí abs(); a poté přidá tento zlomek zpět k nominálnímu datu, které má svůj čas jako půlnoc. Pak to převede na řetězec, přičemž se dívá pouze na čas.

Rychlé demo:

-- CTEs to supply the two date/times
with stp (created_date) as (
  select cast(timestamp '2018-02-26 12:59:21' as date) from dual
),
adhh (created_date) as (
  select cast(timestamp '2018-02-26 12:59:32' as date) from dual
)
select to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')
from stp cross join adhh;

TO_CHAR(
--------
00:00:11

Pokud rozdíl může přesáhnout den, ale ne rok, můžete změnit model formátu na něco jako 'FMDDD FMHH24:MI:SS' , která na začátku zobrazí celé dny.



  1. SQL Inner Join – Jak spojit 3 tabulky v SQL a MySQL

  2. Jak zacházet s chybou Ruby on Rails:Nainstalujte prosím adaptér postgresql:`gem install activerecord-postgresql-adapter'

  3. Dotazovací jazyk Neo4j – Cypher

  4. Nejrychlejší způsob, jak najít zastaralé funkce, které se stále používají v instanci SQL Server (příklad T-SQL)