Как рассчитать последний день месяца для каждой строки в 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