powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос попадают ли две даты в диапазон
14 сообщений из 14, страница 1 из 1
Запрос попадают ли две даты в диапазон
    #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
Запрос попадают ли две даты в диапазон
    #37977653
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nec117Гуглить пробовал
Не то ты гуглил. Гугли задачу о взаиморасположении двух отрезков на прямой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37977683
nec117
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахожу только решение через BETWEEN но они все на проверку одно даты.
Или какие то БД зависимые решения.
Вроде бы простейшая задача которая должна была решаться сотни раз.
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37977687
nec117<>
Или какие то БД зависимые решения.
<>
http://www.postgresql.org/docs/9.2/static/functions-range.html
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #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
Запрос попадают ли две даты в диапазон
    #37977731
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nec117Получается что делать надо так
Из чего "получается"-то? Твоя задача найти пересекающиеся отрезки или непересекающиеся? Из
первого поста это совершенно непонятно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #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
Запрос попадают ли две даты в диапазон
    #37977768
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забудьте наложить ограничение на базу check constraint begin_date<=end_date и на входные параметры.
Проще определить когда диапазоны НЕ ПЕРЕСЕКАЮТСЯ (всего два условия)
param_dto<db_dfrom or db_dto<param_dfrom
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37977814
SERG1257Не забудьте наложить ограничение на базу check constraint begin_date<=end_date и на входные параметры.
Проще определить когда диапазоны НЕ ПЕРЕСЕКАЮТСЯ (всего два условия)
param_dto<db_dfrom or db_dto<param_dfromстало быть NOT(НЕ ПЕРЕСЕКАЮТСЯ) - условие, когда пересекаются :)
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37977824
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nec117, зачем Вы не пишите команд по созданию таблы и инсерты по заполнению? Чтобы любой мог создать у себя. И тада понять что Вам не нравится в Вашем запросе. Сравнить с тем что по Вашему должно быть.
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37981252
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nec117Получается что делать надо так:
Ответ нашел тут
а здесь ответ "на пальцах" и даже обсуждение ;) 4375102
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #37994737
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
расстояние между серединами отрезков должно быть меньше суммы их полудлин, о как!
...
Рейтинг: 0 / 0
Запрос попадают ли две даты в диапазон
    #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
Запрос попадают ли две даты в диапазон
    #37995236
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойпопрощемало того, что попроще, так его ещё и с индексами можно подружить.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос попадают ли две даты в диапазон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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