基于postgres数据库的add_months函数错误

时间:2019-07-16 11:53:56

标签: postgresql

我试图在postgres中查询此查询:

选择to_char((选择add_months(to_date('10 / 10/2019','dd / mm / yyyy'),'11 / 11/2019')),'dd / mm / yyyy')作为temp_date < / p>

我遇到一个错误: 函数add_months(日期,未知)不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

请帮助

2 个答案:

答案 0 :(得分:1)

As documented in the manual在Postgres中没有add_months功能

但是您可以简单地添加一个间隔:

select to_date('10/10/2019', 'dd/mm/yyyy') + interval '10 months'

如果您需要将日期值格式化为以下格式:

select to_char(to_date('10/10/2019', 'dd/mm/yyyy') + interval '10 months', 'yyyy-mm-dd')

答案 1 :(得分:0)

即使在Oracle上运行,也没有人运行原始查询-至少没有成功。看来查询预计会加在一起两个月(在这种情况下为十月和十一月)。那不是函数的作用。它将整数月份添加到指定的日期,并返回结果日期。如Postgres中所示,只需添加所需的时间间隔即可。但是,如果您经常发生这种情况(例如进行转换),则以下实现Postgres版本。

    create or replace function add_months(
              date_in     date
            , n_months_in integer)
      returns date 
      language sql immutable strict  
      as
    $$
    -- given a date and an integer for number of months return the calendar date for the specified number of months away.
    select (date_in + n_months_in * interval '1 month')::date
    $$ ; 

-测试     -从今天起+/- 6个月。     选择“当前日期”          ,add_months(current_date,6)“从现在起6个月”          ,add_months(current_date,-6)“ 6个月前”      ;