我尝试向NOW()中添加一天,并返回一列的值。SELECT NOW() as date但这会产生一个错误SELECT DATE_ADD( NOW(), INTERVAL 1 DAY) as date有没有办法在postgres查询中实现这一点?谢谢
SELECT NOW() as date
SELECT DATE_ADD( NOW(), INTERVAL 1 DAY) as date
eqoofvh91#
我认为PostgreSQL中没有date_add()函数:
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:
+
interval
now()
timestamptz
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将如何尝试自动猜测和转换。
1条答案
按热度按时间eqoofvh91#
我认为PostgreSQL中没有
date_add()
函数:但是可以使用常规
+
运算符将interval
添加到now()
返回的timestamptz
中。Demo:为了方便起见,您可以定义该函数:
但我不认为它真的比运算符更方便。你还必须重载它以确保它如何处理不同的类型-你可以在demo中看到默认情况下PostgreSQL将如何尝试自动猜测和转换。