Как рассчитать последний день месяца для каждой строки в dremio?

У меня есть правильно сформированный столбец даты, из которого я хочу создать новый столбец, это дата последнего дня месяца.

Пример:

current_datefield         end_of_month_date
2019-03-01                 2019-03-31   
2020-01-29                 2020-01-31

Я не знаю, как это сделать в дремио, я пробовал EXTRACT,Date_PART

Ни одно из решений не работает. Заранее спасибо.

3 ответа

У меня работала функция LAST_DAY.

Используется так:

LAST_DAY(date_field)

Поскольку Dremio является проприетарным, и мы не запускаем его там, где я работаю, я не могу протестировать для вас конкретный код, но могу объяснить подход. Я оставлю вам разработку точного синтаксиса.

Вообще говоря, решение состоит в том, чтобы использовать значение даты, которое вы должны вычислить для первого дня следующего месяца, а затем вычесть один день. Это работает, потому что у каждого месяца есть первое число месяца, и каждый механизм SQL получит правильную дату EOM при вычитании единицы из первого числа. В большинстве систем это можно сделать несколькими способами.

Метод "грубой силы" - это взять ваше текущее свидание, current_datefield, тогда EXTRACTгод и месяц. Добавьте один к месяцу. Используйте эти значения и жестко запрограммированный01"строить" первого числа следующего месяца. Вероятно, будетTO_DATE или что-то такое замешанное там.

Теперь просто оберните это значение в DATE_ADD функция вычитания единицы.

Если вы используете SQL Server, есть функция EOMONTH. Используя функцию EOMONTH, вы можете написать запрос в соответствии с вашими требованиями. Посмотрите это видео на YouTube, которое предлагает решение, соответствующее вашим требованиям:https://youtu.be/QsQDHux1C4A

Другие вопросы по тегам