在PostgreSQL中添加月份到日期会显示语法错误

时间:2013-09-17 13:41:47

标签: sql postgresql user-interface

我正在使用Postgres 9.0版本。我想在日期中添加几个月来计算新日期并在表格中更新。这里添加的月数将是整数变量。我的代码如下:

declare numberofmonths smallint = 5;
update salereg1 set expdate = current_date + interval cast(numberofmonths as text) month;

上面的代码显示了强制转换时的语法错误。我不知道如何将numberofmonths变量指定为文本..任何人都可以帮助我。我做错了什么..

4 个答案:

答案 0 :(得分:41)

尝试类似:

update salereg1 
set expdate = current_date + interval '1 month' * numberofmonths;

答案 1 :(得分:7)

这样的事情:

update salereg1 set
    expdate = current_date + (numberofmonths::text || ' month')::interval;

<强> sql fiddle example

答案 2 :(得分:1)

自Postgres 9.4起,您还可以使用方便的功能make_interval

update salereg1 
  set expdate = current_date + make_interval(months => numberofmonths);

答案 3 :(得分:0)

从SQL Server和PostgreSQL之间的类比中理解它

SQL Server: -获取到期日期

SELECT DATEADD(day, valid, purchased) FROM licenses;

PostgreSQL: -获取到期日期

SELECT purchased + valid * INTERVAL '1 DAY' FROM licenses;

类似current_date + number_of_months * INTERVAL '1 MONTH';,因此间隔可以这样设置:“ 1 MONTH”,“ 1 DAY”和“ 1 YEAR”。

此页面的更多PostgreSQL - DATEADD - Add Interval to Datetime