/ / Získanie rozdielu formátu času dvakrát - sql, firebird, datediff

získanie času formát rozdiel dvakrát - sql, firebird, datediff

Snažím sa získať rozdiel v časovom formáte dvoch rôznych časov v Firebird sql. Pokúsil som sa odpočítať dvakrát, ale výsledok nie je v časovom formáte.

  TIME_IN TIME,
TIME_OUT TIME,
DIFFERENCE TIME
SELECT
TIME_IN,
TIME_OUT,
TIME_OUT - TIME_IN

Sample Data
TIME_IN = 7:00
TIME_OUT = 12:00
12:00 - 7:00
my expected output is 5:00

tiež sa snažil použiť DATEDIFF, ale môj výsledok nie je v časovom formáte

DATEDIFF (HOUR, TIME_IN, TIME_OUT)

odpovede:

0 pre odpoveď č. 1

Výsledok DATEDIFF je integrálna hodnota pre špecifikovaný typ. Takže výsledok DATEDIFF(HOUR, "07:00", "12:00") je 5 a nie 5:00.

SQL TIME dátový typ je iba 24 hodín denne, nie je určený na meranie trvania.

Ak z nejakého dôvodu chcete formátovať akočas, budete to musieť urobiť sami. Napríklad tým, že rozdiel v minútach, a potom vypočítať správne zastúpenie v hodinách a minútach.


0 pre odpoveď č. 2

Niečo také:

SELECT
CAST(DATEDIFF(HOUR, CAST(EXTRACT(HOUR FROM CAST(CAST(:TIME_IN as varchar(5)) as time)) || ":00" as TIME), CAST(EXTRACT(HOUR FROM CAST(CAST(:TIME_OUT as varchar(5)) as time)) || ":00" as TIME))
|| ":" ||
DATEDIFF(MINUTE, CAST("00:" || EXTRACT(MINUTE FROM CAST(CAST(:TIME_IN as varchar(5))as time)) as TIME), CAST("00:" || EXTRACT(MINUTE FROM CAST(CAST(:TIME_OUT as varchar(5)) as time)) as TIME)) as TIME)
FROM sth