Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Разница между датами в формате часы:минуты:секунды  [new]
Alibek B.
Member

Откуда:
Сообщений: 2993
Есть две даты, d1 и d2.
Нужно указать разницу между ними в формате ччч:мм:сс.
Если разница более одних суток, что ччч будет более 24, поэтому вариант to_char(trunc(d1)+numtodsinterval((d2-d1)*24*60*60,'second'), 'hh24:mi:ss') не подойдет.
Вариант с математикой (с целочисленным делением и остатком от деления, как тут) в принципе работает, но уж очень громоздкий.
Может быть есть какой-нибудь компактный и красивый способ?
5 мар 19, 20:05    [21825739]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9362
Можно так:

SQL> WITH T AS (
  2             SELECT  SYSDATE DT1,SYSDATE + 1.23456789 DT2 FROM DUAL
  3            )
  4  SELECT  DT1,
  5          DT2,
  6          TRUNC((DT2 - DT1) * 24) || TO_CHAR(DATE '1-1-1' + (DT2 - DT1),':MI:SS') DIFF
  7    FROM  T
  8  /

DT1                 DT2                 DIFF
------------------- ------------------- ----------
03/05/2019 14:16:12 03/06/2019 19:53:59 29:37:47

SQL> 


SY.
5 мар 19, 22:18    [21825773]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Alibek B.
Member

Откуда:
Сообщений: 2993
Да, до такого способа я тоже додумался.
В принципе его мне достаточно.
5 мар 19, 22:31    [21825778]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
KoTTT
Member

Откуда: Екб
Сообщений: 1480
https://medium.com/@FranckPachot/oracle-numbers-in-k-m-g-t-p-e-81e3175eae7e
7 мар 19, 14:00    [21827309]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Alibek B.
Member

Откуда:
Сообщений: 2993
Вот это вообще отлично.
К сожалению у меня 10g, форматирования времени нет, только числа и байты.
7 мар 19, 14:24    [21827344]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
KoTTT
Member

Откуда: Екб
Сообщений: 1480
Там все очень тупо. Ну для своих задач нормально. Можете разврапить (или потрейсить) и посмотреть :)
7 мар 19, 14:29    [21827351]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7820
WITH T AS (
SELECT  SYSDATE AS DT1, SYSDATE + 1.23456789 AS DT2 FROM DUAL)
   , dts AS (
SELECT NUMTODSINTERVAL(DT2-DT1, 'day') AS intrv FROM t)
--
SELECT intrv
     , extract(day from intrv)*24 
     + extract(hour from intrv) 
    || ':'
    || extract(minute from intrv)
    || ':'
    || extract(second from intrv) AS intrv_hh_mi_ss
FROM  dts;

Громоздко?!
Зато сразу понятно!
А это упростит сопровождение кода! :-)
7 мар 19, 16:51    [21827553]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28718
SQL*Plus
Громоздко?!
Зато сразу понятно!
А это упростит сопровождение кода! :-)
Километры копипаста ничего не упрощают.
7 мар 19, 17:05    [21827574]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Валерий Юринский
Member

Откуда: Москва, "ФОРС Дистрибуция"
Сообщений: 1104
Elic
SQL*Plus
Громоздко?!
Зато сразу понятно!
А это упростит сопровождение кода! :-)
Километры копипаста ничего не упрощают.
А метры копипаста упрощают всё? :-)))
7 мар 19, 17:06    [21827575]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28718
Валерий Юринский
А метры копипаста упрощают всё? :-)))
Стареем?
7 мар 19, 17:07    [21827577]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17146
Валерий Юринский
метры копипаста упрощают всё? :-)))

Тезис: для нормального сопровождения функционально завершенный кусок логики должен помещаться на 1-2 экранах.
Наблюдение: Если 8 строчек будет потрачено только на вычисление означенного "формата", то на все остальное останется на 7 строк меньше, чем нужно.
Следствие: "километр копипаста" снижает сопровождаемость кода относительно "метра копипаста".

Тезис 2: Типовой хомо способен одновременно "держать в голове" до 3-5 объектов.
Наблюдение: приведенные 8 строк кода не воспринимаются как единый объект, что усложняет (замедляет) восприятие всего кода.
Следствие: "километр копипаста" снова снижает сопровождаемость кода относительно "метра копипаста".

Вывод: утверждение
SQL*Plus
Громоздко?!
Зато сразу понятно!
А это упростит сопровождение кода! :-)

внутренне противоречиво и, как следствие, ложно.
7 мар 19, 17:42    [21827613]     Ответить | Цитировать Сообщить модератору
 Re: Разница между датами в формате часы:минуты:секунды  [new]
Валерий Юринский
Member

Откуда: Москва, "ФОРС Дистрибуция"
Сообщений: 1104
Elic
Валерий Юринский
А метры копипаста упрощают всё? :-)))
Стареем?
Брюзжать ещё не надоело?
7 мар 19, 17:44    [21827614]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить