【发布时间】:2014-02-24 17:00:00
【问题描述】:
我正在探索 Amazon 云环境 (Redshift) 上的 postgresql 数据库。我想使用\set 命令将值存储到变量中,如下所示。但我无法做到这一点。
我想将“current_date + 90”的输出存储到一个变量中,并在创建用户帐户时将其设置为 USER:
postgres=# select current_date;
date
------------
2014-01-31
(1 row)
postgres=#
postgres=# select current_date+90;
?column?
------------
2014-05-01
(1 row)
我想在以下日期休息:
alter user <user_name> with password <new_passowrd> VALID UNTIL 'current_date+90';
---下面是我对回复我的人的回复(他让我使用 DO $$ ..)
你好,
感谢您抽出宝贵时间回复我的帖子。
我在 psql 提示符中调用 .sql 文件如下:
psql -h <host_name> -U <user_name> -d <db_name> -p <port> -a -f c:\redshift\scripts\psql-alter-user.sql --log-file c:\testlogs\alter-user.log -v v_username=test_user3 -v v_password='Today123#'
(ii) 下面是脚本内容(psql-alter-user.sql)
\echo :v_username
\echo :v_password
\set v_date 'select current_timestamp+90;'
:v_date
alter user :v_username with password :v_password valid until ':v_date';
\q
(iii) 执行此脚本后,以下是我的日志文件:
********* QUERY **********
select current_timestamp+90;
**************************
?column?
-------------------------------
2014-05-01 23:40:47.856804+00
(1 row)
********* QUERY **********
alter user test_user3 with password 'Today123#' valid until ':v_date';
**************************
我无法在 ALTER USER 语法中将实际值 ( 2014-05-01 23:40:47.856804+00 ) 作为 :v_date 。请你帮助我好吗。这将对我当前的项目有很大帮助。
谢谢 基文
【问题讨论】:
-
使用pl/SQL函数怎么样?
标签: sql postgresql date amazon-redshift