30

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

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

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

4

4 回答 4

77

尝试类似:

update salereg1 
set expdate = current_date + interval '1 month' * numberofmonths;
于 2013-09-17T14:27:53.357 回答
14

像这样的东西:

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

sql fiddle example

于 2013-09-17T14:18:11.677 回答
2

从 Postgres 9.4 开始,您还可以使用方便的功能make_interval

update salereg1 
  set expdate = current_date + make_interval(months => numberofmonths);
于 2020-07-28T20:43:42.087 回答
1

从 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 - 将时间间隔添加到日期时间

于 2020-07-28T20:30:28.117 回答