Конвертировать дату в первое число текущего месяца, если дата предшествует текущему месяцу
У меня есть запрос с IIF()
Выражение в одном столбце, которое я использую, чтобы определить, предшествует ли дата текущему месяцу, чтобы затем изменить его, если это так. Так что, если я выполню запрос на 19th March 2014
и EffFrom
дата до 1 марта 2014 г., я бы хотел, чтобы запись в этом столбце отображалась как 1st March 2014
,
Я использую приведенное ниже выражение, которое в значительной степени выполняет то, что я хочу, однако я знаю, что оно не учитывает год - то есть оно меняет запись 1st Jan 2015
быть 1st March 2014
,
EffFrom:
IIf(Month([Table.Efffrom])"Less than symbol"Month(Date()),Date()-Day(Date())+1,[Table.Efffrom])
Может ли кто-нибудь исправить выражение для меня?
2 ответа
Я интерпретировал "если я выполню запрос 19 марта 2014 года, а дата истечения срока до 1 марта 2014 года, я бы хотел, чтобы запись в этом столбце теперь отображалась как 1 марта 2014 года", чтобы означать, что вы хотите что-то подобное из запроса, выполненного сегодня (19 марта 2014):
id Efffrom adjusted_date
1 1/1/2014 3/1/2014
2 3/1/2014 3/1/2014
3 3/31/2014 3/31/2014
4 1/1/2015 1/1/2015
Если это правильно, ваш IIf
выражение может использовать DateSerial
проверить, Efffrom
до первого числа этого месяца, и преобразовать старые даты.
SELECT
y.id,
y.Efffrom,
IIf
(
y.Efffrom < DateSerial(Year(Date()), Month(Date()), 1),
DateSerial(Year(Date()), Month(Date()), 1),
y.Efffrom
) AS adjusted_date
FROM YourTable AS y;
Вот что я делаю, чтобы получить первый день следующего месяца
EffFrom: DateAdd("m",1,CDate(Format([Table.Efffrom],"m/\1/yy")))