Запрос...

Тема в разделе "SQL", создана пользователем -, 12 июн 2007.

Статус темы:
Закрыта.
  1. Гость

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

    Важные поля в таблице 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. Задача кажется очень простой, но сижу над ней уже четыре часа. Если интервал дат получается учесть, то интервал времени учесть не хватает таланта.

    Для времени решаю так
    Код (Text):
    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...
     
  2. etc

    etc Гость

    какая субд? (paradox?)
     
  3. Гость

    Firebird 2.0, программу пишу на Delphi7
     
  4. etc

    etc Гость

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

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

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

    etc Гость

  7. Гость

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

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

    Код вроде такой:
    Код (Text):
    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))
    Если код неправильный, буду благодарен за критику...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей