← К заметкам

Заметки

datediff в роботах: почему вместо разницы дат получается 0

У datediff форматы %d и %a отвечают на разные вопросы. %d — дневная часть составного интервала, %a — общее число дней.

Для интервала с 1 января по 1 февраля дневная часть равна нулю: прошёл один месяц и ещё ноль дней. Поэтому выражения дают разные результаты:

=datediff("01.01.2026", "01.02.2026", "%d")
=datediff("01.01.2026", "01.02.2026", "%a")

Первое вернёт 0, второе — 31. Выражение вставляют в редактор формулы робота или БП; оболочка поля зависит от этого редактора.

Для отрицательного результата при обратном порядке дат используйте %r%a. Если после смены формата число всё ещё неожиданное, проверьте реальные значения дат, их время и часовой пояс. %a считает дни интервала, а не рабочие дни по производственному календарю.

Документация: Формулы бизнес-процессов · PHP: dateinterval.format.php.