set “VALID UNTIL” value with a calculated timestamp

℡╲_俬逩灬. 提交于 2021-01-27 21:30:58

问题


I want to create user or change password with a timestamp calculated over current time. example:

# CREATE USER user WITH PASSWORD 'password12345678' VALID UNTIL '(NOW() + interval 1 month)';

of course it's not valid:

ERROR: invalid input syntax for type timestamp with time zone: "(NOW() + interval 1 month)"


回答1:


Utility commands like CREATE USER do not accept expressions, only literals. You need dynamic SQL.

DO
$do$
BEGIN
   EXECUTE format($$CREATE USER myuser WITH PASSWORD 'password12345678' VALID UNTIL %L$$, NOW() + interval '1 month');
END
$do$;

Detailed explanation:

  • Creating user with password from variables in anonymous block



回答2:


I am not familiar with postgresql but from a quick google search it appears you want the following:

CURRENT_DATE + INTERVAL '1 month';


来源:https://stackoverflow.com/questions/54482903/set-valid-until-value-with-a-calculated-timestamp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!