Разность между датами в запросе.

Аватар пользователя
Администратор
Сообщений: 161
Зарегистрирован: 27 фев 2011, 17:40
Откуда: откуда и все :)
СообщениеДобавлено: 23 сен 2020, 00:18
Расчет разницы между датами в днях, часах, минутах и секундах в запросе 1С.

Код: выделить все
ВЫБРАТЬ
   ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ДЕНЬ, РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)
   КОНЕЦ КАК Дни,
   ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ЧАС, РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)
   КОНЕЦ - ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ДЕНЬ, РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)
   КОНЕЦ * 24 КАК Часы,
   ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, МИНУТА, РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)
   КОНЕЦ - ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ЧАС, РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)
   КОНЕЦ * 60 КАК Минуты,
   РАЗНОСТЬДАТ(&НачДата, &КонДата, СЕКУНДА) - ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, МИНУТА, РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)
   КОНЕЦ * 60 КАК Секунды


Вариант для получения результата одним числом где в целой части часы, а в дробной минуты любой разницы между датами

Код: выделить все
ВЫБРАТЬ
   ((ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ДЕНЬ, РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)
   КОНЕЦ * 24 + ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ЧАС, РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)
   КОНЕЦ - ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ДЕНЬ, РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ)
   КОНЕЦ * 24) * 100 + ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, МИНУТА, РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, МИНУТА)
   КОНЕЦ - ВЫБОР
      КОГДА ДОБАВИТЬКДАТЕ(&НачДата, ЧАС, РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)) > &КонДата
         ТОГДА РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС) - 1
      ИНАЧЕ РАЗНОСТЬДАТ(&НачДата, &КонДата, ЧАС)
   КОНЕЦ * 60) / 100 КАК ЧасыМинуты


Данный фрагменты запроса можно использовать для каждой строки основного запроса.

Сделано по материалам отсюда
Проблема, это задача в решении которой никто не заинтересован.
СВС
Цитата

Вернуться в Для программиста

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Яндекс.Метрика
cron