Страница 1 из 1

Разница в днях между двумя датами

Добавлено: 24 июн 2021, 16:02
timbios
Есть сущность рабочее время. В которой указаны даты начала месяца и окончания месяца.
В сущности "рабочее время" вложенная сущность "табель учета", в которой есть сущности начала отпуска и окончания отпуска, высчитывается кол-во дней (высчитывает разницу в днях между двумя датами.)

Ситуация следующая.

В рабочем времени мы сделали запись "Июнь 2021". В которой указали дату начала месяца и окончания.
В табеле я создаю запись на сотрудника и указываю даты:
28.05.2021 - 4.06.2021
Нужно, чтобы май не шёл в счет кол-ва дней отпуска за июнь. т.е. получалось не 8 дней, а 4.
Есть у кого-то идеи по этому поводу?

Re: Разница в днях между двумя датами

Добавлено: 25 июн 2021, 11:40
timbios
Указываю в mysql формуле следующий код:

Код: Выделить всё

CASE
  WHEN [834]>(SELECT app_entity_66.field_850 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)
  THEN ((SELECT app_entity_66.field_850 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)-[830])/86400
END
Всё работает как нужно. Но стоит добавить ещё, сразу всё ломается. Можете объяснить, в чем здесь проблема?

Код: Выделить всё

CASE
  WHEN [834]>(SELECT app_entity_66.field_850 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)
  THEN ((SELECT app_entity_66.field_850 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)-[830])/86400
  WHEN [830]<(SELECT app_entity_66.field_849 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)
  THEN (SELECT app_entity_66.field_849 FROM app_entity_66 WHERE app_entity_66.id = e.parent_item_id)-[830])/86400)
END

Re: Разница в днях между двумя датами

Добавлено: 25 июн 2021, 15:37
alcompstudio
У вас в условии 2 разных поля, могу предположить, что нужно объединить эти условия и прописать под одним WHEN (типа "WHEN [834]> Select... AND/OR [830] < Select... THEN ...). Т.е. нужно предусмотреть исход (результат) при пересечении условий для обоих полей. Могу ошибаться, но вероятно вам поможет.