Запрос...

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

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

Важные поля в таблице reis такие:

| id_reis | id_car | date_1 | time_1 | date_2 | time_2 |

date_1 - дата отправления
time_1 - время отправления
date_2 - дата прибытия
time_2 - время прибытия

Не обходимо выбрать те id_car, чьи дата и время отправления находяться в промежутке :date_3, :time_3 и :date_4, :time_4. Задача кажется очень простой, но сижу над ней уже четыре часа. Если интервал дат получается учесть, то интервал времени учесть не хватает таланта.

Для времени решаю так
Код:
select reis.id_car from reis where
((reis.date_1 between '6.07.2007' and '10.07.2007'))or
((reis.date_2 between '6.07.2007' and '10.07.2007'))

Помогите, пожалуйста…

На всякий случай сформулирую конкретный пример : Выбрать из таблицы рейсов те машины, которые будут заняты с 6.07.2007 с 10:25 по 10.07.2007 по 23:55...
 
E

etc

с этим сложнее ...
ну как идея скастить все значения к TIMESTAMP а потом уж и проверять
типа так: where (date_1 + time_1) between cast('6.07.2007' || '15:33:00' as TIMESTAMP) and ...
-------------ну это не правильный sql, токмо идея
а ваще там наверное функции должны быть подходящие
 
G

Guest

etc, никогда не сталкивался с cast, даже не знаю с чем его едят... Толькочто искал через Гугл, нормального описания не нашел... Вы не могли бы написать как должен выглядеть правильный sql код.

Да... Даже сли не сможете, пожалуйста, отпишитесь что не будете, я просто проверяю тему каждые 10 минут...
 
E

etc


вот тут наверное найдете
 
G

Guest

Спасибо буду искать описание на русском...
 
G

Guest

etc, спасибо, кажется (тьфу, тьфу, тьфу...) работает... Буду его вставлять, тянуть дальше нету не сил не времени...

Код вроде такой:
Код:
select reis.id_car from reis where
((reis.date_1 + reis.time_1) between cast('6.07.2007 '||'20:01:00' as TIMESTAMP)and cast('10.07.2007 '||'20:00:00' as TIMESTAMP))or
((reis.date_2 + reis.time_2) between cast('6.07.2007 '||'20:01:00' as TIMESTAMP)and cast('10.07.2007 '||'20:00:00' as TIMESTAMP))

Если код неправильный, буду благодарен за критику...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!