3

我想通过将天数添加到当前时间来更新列。在伪语法中它将是:

UPDATE foo
SET time = current_timestamp + days::integer

days 是同一张表中的一列。

4

3 回答 3

6
select now() + cast('1 day' as interval) * 3 -- example: 3 days
于 2009-05-08T06:44:13.920 回答
6
create function add_days_to_timestamp(t timestamptz, d int) 
returns timestamptz
as
$$
begin
    return t + interval '1' day * d;
end; 
$$ language 'plpgsql';


create operator + (leftarg = timestamptz, rightarg = int, 
         procedure = add_days_to_timestamp);

现在这将起作用:

update foo set time = current_timestamp + 3 /* day variable here, 
or a column from your table */

笔记:

出于某种原因,在 Postgres 中内置了将整数添加到日期,这将起作用:

select current_timestamp::date + 3 -- but only a date

这不会(除非您定义自己的运算符,见上文):

select current_timestamp + 3
于 2009-05-08T07:02:30.303 回答
2

没有时区的计算日期时间戳;

calculatedDate := current_timestamp + interval '1' day * days_count; 
于 2017-01-09T21:59:14.673 回答