Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL Часове Разлика между датите в ЧЧ:ММ:СС

Ако приемем, че колоните вече са дати и следователно преобразуването към и от низове, които правите, е безсмислено и че разликата винаги ще бъде по-малко от един ден, можете да направите:

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

Това получава разликата между датите като част от деня; гарантира, че е положителен чрез abs(); и след това добавя тази дроб обратно към номинална дата, която има час като полунощ. След това го преобразува в низ, гледайки само времето.

Бърза демонстрация:

-- 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

Ако разликата може да надхвърли един ден, но не и година, можете да промените модела на формат на нещо като 'FMDDD FMHH24:MI:SS' , което ще показва пълни дни в началото.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намеря зависимости в пакет оракул?

  2. Как да изпълните съхранена процедура на Oracle чрез връзка към база данни

  3. Свързване на Oracle с PostgreSQL

  4. Преобразувайте минутите във формат HH24:MI

  5. Как да шифровате парола в Oracle?