|
Расчет времени в запросе |
☑ |
0
brenli
24.02.22
✎
12:20
|
Всем добра
Решаю задачу по запросам - нужно вычислить время в полете для каждого пассажира, для каждого рейса.
Дата отправления хранится в одной таблице БД, время отправления и время прибытие хранится в другой таблице БД.
Формат времени 24 ч.
Вся соль вопроса в том что время может уходить в следующие сутки.
Например ЧасОтправления 12 ч, а время прибытия 2 ч.
Как адекватно вычислять разницу во времени?
Посоветуйте пжл?
У меня есть несколько идей но они какие то очень громоздкие:
1) Описать через условный оператор все возможные варианты когда ЧасОтправления > ЧасПрибытия, ЧасОтправления = 24ч, ЧасОтправления < ЧасПрибытия и т.д. тогда поидее поле дата можно не использовать.
2) К данных поля ДатаОтправления устанавливаем время из другой таблицы путем ДобавитьКДате предварительно извлеченные часы и минуты, и потом путём анализа через условный оператор вычисляем поле ДатаПрибытия со временем,
и используем функцию РАЗНОСТЬДАТ().
Как бы вы стали решать такое?
|
|
1
acht
24.02.22
✎
13:05
|
Кому-то было лениво придумывать задачи и он спер их с sql-ex
https://www.sql.ru/forum/1067442/zapros-na-sql-pomogite
|
|
2
Жан Пердежон
24.02.22
✎
13:06
|
на sql-ex что ли задачки решаешь?
|
|
3
mikecool
24.02.22
✎
13:06
|
а как еще можно решить без РазностьДат()?
|
|
4
acht
24.02.22
✎
13:06
|
(2) Не, это по просторам тырнета бродит задачник уже на 1С с цельнотянутыми примерами. Искать лень.
|
|
5
brenli
24.02.22
✎
13:22
|
(3) РазностьДат не прокатывает с ходу так как известна только дата отправления. Что будешь толкать в функцию разность дат?
Дата отправления к примеру 01.04.10 22:10, и известно время прибытия 02:15, а это уже следующий день.
|
|
6
brenli
24.02.22
✎
13:23
|
(2) На тренажере 1с построенном по мотивам sql-ex
|
|
7
patapum
24.02.22
✎
13:31
|
(5) А почему следующий день? А не через день, например? Если точно на следующий день, то можно сделать.
Для начала надо из времени сконструировать дату+время, исходя из того, что это день сегодняшний. Сделать это используя разность дат (например времени с пустой датой), начало периода и добавить к дате, вполне можно. Дальше смотрим разность дат прилета и вылета, если она положительная, берем ее, если отрицательная, то берем разность дат, только к дате прилета добавляем один день. Условия пишем через выбор.
Получится громоздко, но уж как получится.
|
|
8
brenli
24.02.22
✎
13:41
|
(7) Описание из схемы БД - рейсы выполняются ежедневно, а длительность полета любого рейса менее суток;
|
|
9
brenli
24.02.22
✎
13:43
|
(7) Спасибо
|
|
10
НЕА123
24.02.22
✎
13:52
|
Прилет-Отлет+Выбор когда Прилет-Отлет < 0 Тогда 24 Иначе 0 конец
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший