我试图在postgres中查询此查询:
选择to_char((选择add_months(to_date('10 / 10/2019','dd / mm / yyyy'),'11 / 11/2019')),'dd / mm / yyyy')作为temp_date < / p>
我遇到一个错误: 函数add_months(日期,未知)不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
请帮助
答案 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个月前” ;