|   |   | 
| 
 | Расчет времени в запросе | ☑ | ||
|---|---|---|---|---|
| 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 конец     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |