postgresql 向Now()添加一天并在SQL查询中作为默认值返回

aiazj4mn  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(224)

我尝试向NOW()中添加一天,并返回一列的值。
SELECT NOW() as date
但这会产生一个错误
SELECT DATE_ADD( NOW(), INTERVAL 1 DAY) as date
有没有办法在postgres查询中实现这一点?谢谢

eqoofvh9

eqoofvh91#

我认为PostgreSQL中没有date_add()函数:

ERROR:  function date_add(timestamp with time zone, interval) does not
exist
LINE 1: select date_add(now(), interval '1 day');
               ^
HINT:  No function matches the given name and argument types. You
might need to add explicit type casts.

但是可以使用常规+运算符将interval添加到now()返回的timestamptz中。Demo

select now() + '1 day'::interval;

为了方便起见,您可以定义该函数:

create function date_add(arg1 timestamptz, arg2 interval) 
returns timestamptz language sql as $$
select arg1+arg2
$$;

select date_add(now(), interval '1 day') as date;

--             date
---------------------------------
-- 2022-11-29 12:28:12.393508+00

但我不认为它真的比运算符更方便。你还必须重载它以确保它如何处理不同的类型-你可以在demo中看到默认情况下PostgreSQL将如何尝试自动猜测和转换。

相关问题