Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос попадают ли две даты в диапазон / 14 сообщений из 14, страница 1 из 1
30.09.2012, 21:38
    #37977641
nec117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Все привет, есть таблица.
Код: plsql
1.
2.
3.
4.
id|  begin_date        |           end_date
1 |2012-10-05 08:53:00 | 2012-10-05 10:00:00
2 |2012-10-04 05:05:00 | 2012-10-04 05:10:00
3 |2012-10-05 08:55:00 | 2012-10-05 09:55:00



Есть выходные параметры
begin_date = 2012-10-05 08:55:00
end_date = 2012-10-05 09:00:00
Выбраться должно две записи 1, 3 т.к. записи попадают под диапазон
По сути это график занятости такси.
т.е. если такси забронировано с 9:00 до 10:00 утра его нельзя заказать в этот промежуток времени
Но при этом его можно заказать с 10:00 или до 9:00

Сам я написал такой запрос, но он не правильно отрабатывает.
Код: plsql
1.
2.
3.
SELECT begin_date, comment, end_date, clients_id, user_id, id FROM appointment WHERE 
((begin_date >= 'Fri Oct 05 08:55:00 MSK 2012' AND begin_date < 'Fri Oct 05 09:55:00 MSK 2012') OR 
(end_date < 'Fri Oct 05 08:55:00 MSK 2012' AND end_date >= 'Fri Oct 05 09:55:00 MSK 2012')) 


Гуглить пробовал, но нашел только как проверить попадает ли одна дата в диапазон между двумя датами. А у меня используется две даты.
...
Рейтинг: 0 / 0
30.09.2012, 22:04
    #37977653
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
nec117Гуглить пробовал
Не то ты гуглил. Гугли задачу о взаиморасположении двух отрезков на прямой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.09.2012, 22:46
    #37977683
nec117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Нахожу только решение через BETWEEN но они все на проверку одно даты.
Или какие то БД зависимые решения.
Вроде бы простейшая задача которая должна была решаться сотни раз.
...
Рейтинг: 0 / 0
30.09.2012, 22:53
    #37977687
Запрос попадают ли две даты в диапазон
nec117<>
Или какие то БД зависимые решения.
<>
http://www.postgresql.org/docs/9.2/static/functions-range.html
...
Рейтинг: 0 / 0
30.09.2012, 23:12
    #37977704
nec117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Получается что делать надо так:
Код: sql
1.
2.
3.
4.
5.
SELECT * FROM appointment WHERE 
   end_date between 'Fri Oct 05 08:55:00 MSK 2012' AND 'Fri Oct 05 09:55:00 MSK 2012' 
OR begin_date between 'Fri Oct 05 08:55:00 MSK 2012' AND 'Fri Oct 05 09:55:00 MSK 2012'
OR 'Fri Oct 05 08:55:00 MSK 2012' BETWEEN begin_date AND end_date
OR 'Fri Oct 05 09:55:00 MSK 2012' BETWEEN begin_date AND end_date



Ответ нашел тут
...
Рейтинг: 0 / 0
01.10.2012, 00:05
    #37977731
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
nec117Получается что делать надо так
Из чего "получается"-то? Твоя задача найти пересекающиеся отрезки или непересекающиеся? Из
первого поста это совершенно непонятно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.10.2012, 01:10
    #37977752
nec117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Dimitry Sibiryakov,

Мне надо найти все пересекающиеся записи.
Если брать пример из первой таблицы то по входящий данным.

5-ое число время: 08:55 - 08:56 должны вернуться записи 1,3
5-ое число время: 08:00 - 08:53 0 записей
5-ое число время: 09:00 - 09:55 записи 1, 3
5-ое число время: 09:55 - 10:50 запись 1
5-ое число время: 10:00 - 10:10 0 записей
...
Рейтинг: 0 / 0
01.10.2012, 03:08
    #37977768
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Не забудьте наложить ограничение на базу check constraint begin_date<=end_date и на входные параметры.
Проще определить когда диапазоны НЕ ПЕРЕСЕКАЮТСЯ (всего два условия)
param_dto<db_dfrom or db_dto<param_dfrom
...
Рейтинг: 0 / 0
01.10.2012, 08:23
    #37977814
Запрос попадают ли две даты в диапазон
SERG1257Не забудьте наложить ограничение на базу check constraint begin_date<=end_date и на входные параметры.
Проще определить когда диапазоны НЕ ПЕРЕСЕКАЮТСЯ (всего два условия)
param_dto<db_dfrom or db_dto<param_dfromстало быть NOT(НЕ ПЕРЕСЕКАЮТСЯ) - условие, когда пересекаются :)
...
Рейтинг: 0 / 0
01.10.2012, 08:41
    #37977824
vadiminfo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
nec117, зачем Вы не пишите команд по созданию таблы и инсерты по заполнению? Чтобы любой мог создать у себя. И тада понять что Вам не нравится в Вашем запросе. Сравнить с тем что по Вашему должно быть.
...
Рейтинг: 0 / 0
03.10.2012, 10:03
    #37981252
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
nec117Получается что делать надо так:
Ответ нашел тут
а здесь ответ "на пальцах" и даже обсуждение ;) 4375102
...
Рейтинг: 0 / 0
12.10.2012, 00:52
    #37994737
Gallagher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
расстояние между серединами отрезков должно быть меньше суммы их полудлин, о как!
...
Рейтинг: 0 / 0
12.10.2012, 10:07
    #37995006
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
Gallagherрасстояние между серединами отрезков должно быть меньше суммы их полудлин, о как!

выше ж вроде предложили попроще:
NOT((param_dt_to < db_dt_from) OR (db_dt_to < param_dt_from))
=
((param_dt_to >= db_dt_from) AND (db_dt_to >= param_dt_from))
...
Рейтинг: 0 / 0
12.10.2012, 11:35
    #37995236
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос попадают ли две даты в диапазон
АнатоЛойпопрощемало того, что попроще, так его ещё и с индексами можно подружить.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос попадают ли две даты в диапазон / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]