将日期舍入到最近月份的sql函数

qzlgjiam  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(351)

我正在尝试使用sql将日期舍入到最近的月份

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

以及获取错误:
'无效操作:函数日期\格式(日期,“未知”)不存在[sql状态=42883,数据库错误代码=500310]'
这个函数是否只存在于sql的某些版本中,或者我使用的不正确?

8ljdwjyq

8ljdwjyq1#

此函数有助于对日期进行舍入。

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;

不足16日的改为当月1日,不足16日的改为下月1日

qyuhtwio

qyuhtwio2#

您可以使用日期函数:

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'
)

相关问题