Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Длина временного интервала 
V
    Опции темы
Sherst
Дата 3.1.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



Привет всем!
Допустим есть отрезок времени (TIMESTAMP). Необходимо посчитать его длину в минутах. Как то так:

Код

function get_length(beg_time TIMESTAMP, end_time TIMESTAMP)
            return INTEGER;

IS
  length INTEGER;
BEGIN
  length := (end_time - beg_time);
  return length;
END;


PM MAIL   Вверх
Sherst
Дата 3.1.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



Вот моя таблица:

Код

    begin_time                                     end_time
                                             
24.07.2006 14:00:00,000000   24.07.2006 17:00:00,000000
24.07.2006 15:00:00,000000   24.07.2006 16:00:00,000000
24.07.2006 15:00:00,000000   24.07.2006 16:00:00,000000
24.07.2006 17:00:00,000000   24.07.2006 19:00:00,000000


 Такой вот запрос 
Код

SELECT 
       substr(("end_time" - "begin_time"),instr(("end_time" - "begin_time"),' ' )+1,2) "HOURS"
FROM "Reservation";


Возращает такой результат:

Код

HOURS
   03
   01
   01
   02


Осталось как-то посчитать минуты

Это сообщение отредактировал(а) Sherst - 3.1.2007, 16:32
PM MAIL   Вверх
3x3
Дата 3.1.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



Вы-таки будете смеяться, но поскольку (end_time - beg_time) возвращает временной интервал в сутках, то что бы результат получался в минутах, его надо домножить на количество минут в сутках (1440=24*60) smile


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Sherst
Дата 4.1.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



3x3 да это понятно smile
Для меня проблема была в конвертировании
В общем сделал вот так:

Код


       FUNCTION GET_LENGTH_INTERVAL(pm_end_time TIMESTAMP, 
                                    pm_beg_time TIMESTAMP) 
                                    return INTEGER
                                    
       IS
         length_interval INTEGER;
       BEGIN
                    
         SELECT to_number(substr(to_char((pm_end_time-pm_beg_time)*24*60,'MI'),2,9)) INTO length_interval FROM dual;
         
         return length_interval;
       END;



Может будут какие-нибудь замечания ? smile
PM MAIL   Вверх
3x3
Дата 4.1.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



CAST(end_date as DATE) - CAST(start_date as DATE)


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Sherst
Дата 4.1.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



3x3 Спасибо за замечанияsmile


Это сообщение отредактировал(а) Sherst - 4.1.2007, 22:18
PM MAIL   Вверх
3x3
Дата 5.1.2007, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



Цитата(Sherst @ 4.1.2007,  22:17)
3x3 Спасибо за замечанияsmile

Это не замечания, это мысли в слух. Я тоже не очень себе представляю как следует правильно поступать с этим странным типом данных...


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.