gpt4 book ai didi

postgresql - 在 Postgres 中的变量中存储任意日期

转载 作者:行者123 更新时间:2023-11-29 12:35:18 25 4
gpt4 key购买 nike

[这可能真的很简单,但我用谷歌搜索了太久都没有成功]

我想在 Postgres 的变量中存储一系列日期,以便对它们运行一系列查询:

\set SESSION startDate  date'2018-04-01'
\set SESSION reportDate CURRENT_DATE

然后我想运行一系列查询,例如

SELECT COUNT(id) FROM assets
WHERE target_date > :startDate
AND target_date < :reportDate;

我的变量“reportDate”工作正常,但有人可以告诉我如何正确地将任意日期设置为“startDate”。我已经尝试了所有转义\set 命令值的方式,但均未成功。

我得到的错误是:

ERROR:  column "date2018" does not exist

我正在使用 PostgreSQL 9.3.22。

非常感谢

最佳答案

psql 中,您应该将单引号加双引号变量:

postgres=# \set foo 'date ''2018-04-01'''
postgres=# select :foo;
┌────────────┐
│ date │
├────────────┤
│ 2018-04-01 │
└────────────┘

注意整个值周围的单引号。

您可以使用 :'<variable name>' 获取确切的变量值:

postgres=# \set foo1 date'2018-01-01'
postgres=# \set foo2 'date ''2018-01-01'''
postgres=# select :'foo1', :'foo2';
┌────────────────┬───────────────────┐
│ ?column? │ ?column? │
├────────────────┼───────────────────┤
│ date2018-01-01 │ date '2018-01-01' │
└────────────────┴───────────────────┘

或仅通过 \set没有参数的元命令。

关于postgresql - 在 Postgres 中的变量中存储任意日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50061697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com