|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2013, 13:05 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Oracle. Расчет врмени между 2я датами, как?
Доброго времени суток!
Надо найти разницу во времени между 2я датами: А: 23.11.2013 09:03:14 Б: 21.11.2013 06:14:00 так чтобы получить разницу в днях часах минутах и секундах, т.е. А - Б = 1 день 21 часов 11 минут N секунд. Как это реализовать? Сейчас пытаюсь получить какую-то разницу: Код:
1. Что получается после вычитания, и почему оно домножается на 86400? 2. Что такое 3600? 3. Если я делю на 60, то записи выводятся т.к. подподают под условие > 1 4. Если я делю на 60 а затем ещё раз на 60, то записи НЕ выводятся. |
22.11.2013, 13:36 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, во-первых, вы спрашиваете как получить разницу в днях, часах, минутах, а сами в примере ОТБИРАЕТЕ записи с определённой разностью Вам не кажется, что это разные вещи?!
во-вторых, 86400 - это 60*60*24 (60 секунду * 60 минут * 24 ) == число секунд в одних сутках 3600 - похоже, что это число секунд в часе а вот дальше мне не понятно. MOD (разница_в_секундах, 3600) даст нам количество секунд, остающихся в отстатке от деления разницы на 3600 если это число разделить на 60 - получим число минут если число минут разделить на 60 получим число часов - но в данном случае всегда получим ноль часов (мы же уже взяли ОСТАТОК от деления на 3600) |
22.11.2013, 13:39 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
SYSDATE - R.DATETIMERECEIVE - разница в днях (1.23540003)
(SYSDATE - R.DATETIMERECEIVE) * 86400 - разница в секундах MOD((SYSDATE - R.DATETIMERECEIVE) * 86400, 3600) - остаток от деления = секунды после отбрасывания целых часов Как-то многоэтажно, чтобы получить 5 дн 13 ч 36 м 05 с: Код:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 22.11.2013 в 13:57. |
22.11.2013, 14:37 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Аватар, + 1
я вот ещё ТУТ почитал... получилась такая конструкция: Код:
Человек_Борща кстати, Цитата:
2 дней(я) 2 часа 49 мин 14 сек кто из нас ошибся? |
|
28.11.2013, 17:38 | #5 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Все привести в секунды и сравнить, проще, чем нагромождать вычисления. [QUOTE]у меня получилась разница 2 дней(я) 2 часа 49 мин 14 сек кто из нас ошиб |
|
28.11.2013, 17:59 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Оптимальней запрос будет для
R.DATETIMERECEIVE>=какой-то даты-времени Так индекс будет работать для поля DATETIMERECEIVE, если он есть вообще. Вариант, которого оказалось достаточно не оптимален - индекс не будет задействован. А какую-то дату-время можно вычислить на клиенте на основании текущей и смещения и встроить в запрос или передать параметром в хранимку
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.08.2017, 14:29 | #7 |
Новичок
Джуниор
Регистрация: 24.08.2017
Сообщений: 1
|
--количество целых часов между началом и концом события
SELECT TRUNC( MOD((to_date('03.06.2017 11:25:55','dd.mm.yyyy HH24:mi:ss') --конец дата время -to_date('01.06.2017 19:05:46','dd.mm.yyyy HH24:mi:ss')) * 86400,0 --начало дата время )/60/60 ) from dual |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в MS Excel рассчитать количество полных месяцев между двумя датами? | moonlightchild | Microsoft Office Excel | 2 | 28.12.2012 13:20 |
найти разницу между двумя датами, а результат записать в письменном виде, так чтобы было согласование между падежами | KatanaZh | Microsoft Office Excel | 15 | 27.11.2012 00:11 |
Как между двумя датами определить время бодрствования? | Dux | Общие вопросы Delphi | 14 | 16.09.2010 14:41 |
Как задать интервал между датами в фильтре | Леон | Microsoft Office Access | 2 | 22.10.2008 11:16 |
Расчет полей с датами и передачи строк в отчет. | crem78 | БД в Delphi | 2 | 09.08.2008 12:07 |