Есть ли способ оценить первый день месяца и последний день месяца? - PullRequest
0 голосов
/ 07 мая 2020

Я хотел знать, есть ли способ оценивать даты таким образом, чтобы оценивать первое число месяца и последнее число месяца

У меня есть два столбца

Start Date  End Date           Result
1/1/2020    1/31/2020          Standard
2/5/2020    2/15/2020          Irregular

Цель состоит в том, чтобы использовать условное форматирование для выделения дат, которые не начинаются 1 числа месяца и не заканчиваются в последний день месяца

Пробовал это решение, которое было предложено:

IsStandard = [End Date] = Date.EndOfMonth(Date.FromText([End Date])) and [Start Date] = Date.AddDays(Date.AddMonths(Date.EndOfMonth(Date.FromText([Start Date])),-1),1)

Выражение оценивает, но возвращает все результаты как «Ложь» (ПРИМЕЧАНИЕ: даты указаны как текстовые значения, поэтому мне пришлось добавить дополнительную Date.FromText ())

Есть ли способ получить выражение для оценки диапазон дат от 1-го до последнего месяца как истина, а все остальное - ложь ??

1 Ответ

0 голосов
/ 08 мая 2020

Версия PowerQuery: вы можете создать настраиваемый столбец следующим образом:

IsStandard = [End Date] = Date.EndOfMonth([End Date]) and [Start Date] = Date.AddDays(Date.AddMonths(Date.EndOfMonth([Start Date]),-1),1)

Эта версия возвращает значение ИСТИНА, если дата начала - это начало месяца, а дата окончания - это конец месяца. В соответствии с вашим вариантом использования вы можете инвертировать logi c или разбить его на столбец, чтобы отметить начало месяца / не начало месяца, а другой - конец месяца / не конец месяца.

Причина странного logi c в начале месяца в том, что PowerQuery предоставляет функцию Date.EndOfMonth, но не Date.StartOfMonth, поэтому вам нужно взять конец месяца, вычесть месяц, а затем добавить день, чтобы добраться до начало месяца.

Надеюсь, это поможет :).

Edit RE: always false ... Это еще одна причуда языка и не интуитивно понятная, но ключ в том, что преобразование типа через Date.FromText () возвращает дату, допускающую значение NULL, которая отличается от строгого типа данных Date (это можно подтвердить, добавив столбец на основе формулы Date.FromText ([End Date]) и проверив тип данных неявно назначается новому столбцу, который не является датой.

Вероятно, самым простым вариантом было бы изменить тип столбцов [Дата начала] и [Дата окончания] на Дата до оценки для «стандартного» и «нерегулярного» и удалите вызовы Date.FromText из нового столбца. В любом случае это может сделать поля более согласованными, но вы можете столкнуться с проблемой, если какое-либо из необработанных значений на самом деле является нулевым или пустым. Если какие-либо значения являются пустыми или пустыми, вы выполняете проверку на нулевое значение, чтобы сократить преобразование даты и проверить начало / конец месяца. Если проверка на null не удалась, у вас будет возможность пометить запись как отличную от «Стандартной» и «Нерегулярной», если это важно для вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...