Postgresql 错误:类型时间戳的输入语法无效:

Postgresql 错误:类型时间戳的输入语法无效:,postgresql,postgresql-9.4,Postgresql,Postgresql 9.4,我的PostgreSQL查询中出现错误,如下所示 错误:类型时间戳的输入语法无效: 我正在使用\set设置值 \set dueDateEarliest '2018-04-01' \set dueDateLatest '2018-08-01' \set dueDateLatest '2018-08-01' 并尝试在我的查询中使用这些值,如下所示 SELECT DISTINCT(bu.id) as "user_id",c.organization_name as "name",round(i.ba

我的PostgreSQL查询中出现错误,如下所示 错误:类型时间戳的输入语法无效:

我正在使用
\set
设置值

\set dueDateEarliest '2018-04-01'
\set dueDateLatest '2018-08-01'
\set dueDateLatest '2018-08-01'
并尝试在我的查询中使用这些值,如下所示

SELECT DISTINCT(bu.id) as "user_id",c.organization_name as "name",round(i.balance,2) as "amount_due",i.id as "invoice_number",i.due_date as "due_date",CONCAT('collectionMonth', LPAD(cf2.content,2,'0')) as "collection_date" FROM base_user bu,contact c,contact_field cf, invoice i, contact_field cf2 WHERE bu.id = c.user_id AND bu.deleted = 0 AND cf.contact_id = c.id AND cf.type_id = 7 AND cf.content = 'DD' AND i.user_id = bu.id AND i.balance > 0 AND i.is_review != 1 AND i.deleted != 1 AND due_date BETWEEN 'dueDateEarliest' AND 'dueDateLatest' AND cf2.contact_id = c.id AND cf2.type_id = 8 ORDER BY bu.id limit 20;
这是一个错误 错误:类型时间戳的输入语法无效:

我没有办法解决它。 此外,我使用
\set
设置值的方式是否合适? 或者我应该使用
SET
来设置值。 因为实际上,当我必须从shell脚本运行这些命令时,我将调用/设置为
`从shell脚本中设置dueDateEarliest'$dueDateEarliest'`

哪种方式最好


附加屏幕截图也是一个如何设置查询格式的问题。让我们简化一下:

# \set dueDateEarliest '2018-04-01'
# select 'dueDateEarliest'::timestamp;
ERROR:  invalid input syntax for type timestamp: "dueDateEarliest"
LINE 1: select 'dueDateEarliest'::timestamp;
它不起作用,因为它试图使用字符串'dueDateEarliest',而不是变量

以下是正确的方法:

# select :'dueDateEarliest'::timestamp;
      timestamp
---------------------
 2018-04-01 00:00:00
(1 row)

是的,就是这样。我已更正为:'DueDateLastest':timestamp和:'DueDateLastest':timestamp之间的错误