SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.08.2011 15:21:27

Wayne
Участник
Зарегистрирован: 16.08.2011
Сообщений: 1

Вычитание временных интервалов друг из друга

Добрый день.
Задача следующая:

Есть расписание работы врача в виде часовых временных интервалов:
date            start    finish
2011-08-15        10    13
2011-08-15        14    19
Значит врач работает с 10 до 19 с перерывом на обед 13-14.

Врач принимает пациентов:
date            start        length (длительность приема в минутах)
2011-08-15        10.15        45
2011-08-15        11.30        30
2011-08-15        14.00        60
Значит у врача 3 приема, в течении которых он занят.

Производится поиск по расписанию врача для того, чтобы записаться к нему с заранее известной длительностью приема.
Скажем, я хочу записаться к врачу на прием, который будет длиться полтора часа.
Свободные интервалы врача (по данным выше): 10.00-10.15; 11.00-11.30; 12.00-13.00; 15.00-19.00.
Значит сегодня я смогу "влезть" только в интервал с 15.00 до 19.00.

Вопрос: как получить эти свободные интервалы, чтобы понять, смогу ли я сегодня записаться к этому врачу?
Сделать нужно в одном SQL-запросе. Без процедур.

Неактивен

 

#2 17.08.2011 03:06:17

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Вычитание временных интервалов друг из друга

Сделайте нормальную колонку datetime (2011-08-15 10:15:00)

А потом по такому принципу получите свободный диапазон дат.

SET @prev_date:=null;
select `date`,@prev_date as 'prev_date',(@prev_date:=`date`)
from mytable where `length`>=90 ORDER BY `date`;

 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson