Datediff in Crystal Report - PullRequest
       62

Datediff in Crystal Report

0 голосов
/ 17 марта 2020

Прежде чем начать, я хочу сказать, что извините, мой вопрос может быть немного глупым, так как я новичок ie для CR.

Я поместил формулу датированного разряда в Crystal Report ver 14.0.12, и он возвращает неверный результат для некоторых особых случаев.

Формула похожа на приведенную ниже;

DATEDIFF ('M', {START_DATE}, {END_DATE})

Если начало дата - 2018-05-01, а дата окончания - 2020-04-30, результат должен быть как «24», но он возвращает «23». Кажется, если диапазон дат находится в первый или последний день, он имеет ошибку выше.

Кроме того, у меня есть другая проблема с другой формулой.

Я поставил формулу ниже, чтобы получить «следующая дата» определенного поля даты,

ДАТА (ГОД ({поле_даты}), МЕСЯЦ ({поле_даты_даты}), ДЕНЬ ({поле_данных_диска} +1))

и имеет возникает, когда поле даты является «конечной датой» определенного месяца.

Например, если поле даты - 2020-03-31, ожидаемый результат - 2020-04-01, но моя формула возвращается как «2020 -03-01 '.

Пожалуйста, дайте мне знать, что мне делать, чтобы получить правильный результат.

Большое спасибо:)

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Одиночная цитата в порядке. Источником проблемы является то, что добавление от 1 до 31 равно 32 (что оборачивается обратно в 1 из-за даты logi c).

Предложение выше для использования DateAdd () является правильным решением.

0 голосов
/ 17 марта 2020

Что касается вашей функции DateDiff().

Возможно, вы допустили опечатку, задавая вопрос? Первым аргументом функции является intervalType , который является строковым выражением, поэтому его следует заключать в двойные кавычки; у вас есть одинарные кавычки в вашем вопросе. Использование одинарных кавычек должно привести к синтаксической ошибке. Кроме того, intervalType для Месяца должен быть выражен в нижнем регистре "m".

Что касается вашей проблемы с добавлением 1 дня к дате, я бы рекомендовал использовать функцию DateAdd(intervalType, nIntervals, startDateTime) для завершить эту задачу. Попробуйте вместо этого следующую формулу:

DateAdd("d", 1, {date_field})

Однако имейте в виду, что эта функция будет возвращать значение DateTime, поэтому, если вы хотите удалить метку времени из возвращаемой даты, вы захотите привести всю функцию как тип данных Date с использованием функции Date() следующим образом:

Date(DateAdd("d", 1, {date_field}))
...