Конвертировать дату в первое число текущего месяца, если дата предшествует текущему месяцу

У меня есть запрос с 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")))
Другие вопросы по тегам