我正在使用Postgres 9.0版本。我想在日期中添加几个月来计算新日期并在表格中更新。这里添加的月数将是整数变量。我的代码如下:
declare numberofmonths smallint = 5;
update salereg1 set expdate = current_date + interval cast(numberofmonths as text) month;
上面的代码显示了强制转换时的语法错误。我不知道如何将numberofmonths
变量指定为文本..任何人都可以帮助我。我做错了什么..
答案 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”。