Как рассчитать последний день месяца в строке в dremio? - PullRequest
0 голосов
/ 14 февраля 2020

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

Пример:

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

Я не знаю, как это сделать в dremio, я пытался EXTRACT,Date_PART

Не работают решения. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

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

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

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

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

0 голосов
/ 24 февраля 2020

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

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

LAST_DAY(date_field)
0 голосов
/ 14 февраля 2020

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

...