SQL функция округления даты до ближайшего месяца - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь округлить дату SQL до ближайшего месяца, используя

select date_format(date_field, %Y-%m) as date_rounded

, и получаю сообщение об ошибке:

'Недопустимая операция: функция date_format ( дата, «неизвестно») не существует; [SQL State = 42883, DB Errorcode = 500310] '

Эта функция существует только в определенных версиях SQL или я использую ее неправильно?

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вы можете использовать функции даты:

to_char(
  add_months(
    date_field, 
    case 
      when datediff(day, date_field, last_day(date_field)) < date_part(d, date_field) then 1 
      else 0 
    end
   ), 
  'YYYY-MM'
)
0 голосов
/ 03 августа 2020

Эта функция поможет округлить дату.

SELECT CASE 
         WHEN date_format(date_field, '%d') < '16' THEN
           date_format(date_field, '%Y-%m-01')
         ELSE
           date_format( DATE_ADD(date_field, INTERVAL 1 MONTH) , '%Y-%m-01')
         END as 'date_rounded'
  FROM my_table;

Это будет до 1-го числа текущего месяца, если число меньше 16, в противном случае дата будет округлена до 1-го числа следующего месяц

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