Недавно возникла необходимость получить точное количество лет в запросе, результат функции РазностьДат выдавал некорректный результат в ряде случаев. Например, РазностьДат(31.12.2011, 01.01.2012, ГОД) равно 1, хотя на самом деле количество целых лет должно быть равно 0.
Результаты поисков решений предлагаю протестировать в этом запросе.
Результаты поисков решений предлагаю протестировать в этом запросе.
ВЫБРАТЬ ГОД(&Дата2) - ГОД(&Дата1) - ВЫБОР КОГДА МЕСЯЦ(&Дата2) < МЕСЯЦ(&Дата1) ТОГДА 1 ИНАЧЕ ВЫБОР КОГДА МЕСЯЦ(&Дата2) = МЕСЯЦ(&Дата1) ТОГДА ВЫБОР КОГДА ДЕНЬ(&Дата2) < ДЕНЬ(&Дата1) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК Поле1, РАЗНОСТЬДАТ(&Дата1, &Дата2, ГОД) КАК Поле2, РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ) / 12 КАК Поле3, РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ) / 365 КАК Поле4Если у вас есть свои варианты решений подобной задачи. приводите в комментариях, буду рад ознакомиться.
Комментариев нет:
Отправить комментарий