sql - PSQL:将设置日期变量传递到日期时间时出现语法错误

标签 sql postgresql datetime syntax psql

我在 psql 中的服务器端(使用 SSH)工作,我在其中使用“\set”命令设置变量。

我担心的是:我有一个查询,我在其中将一组字符串(日期)插入到日期时间中,但出现语法错误。

简单的例子:

SELECT
    network_no,
    program_no,
    national_datetime.
FROM
    views
WHERE
    national_datetime
    between ':from_date 06:00:00'
    and ':to_date 05:59:59'::timestamp + '1 day'::interval

相应地设置了“from_date”和“to_date”:

\set from_date 2017-07-10
\set to_date 2017-07-16

我知道通常你应该设置三组撇号才能正确读取日期(我从来没有查过原因),但我将这个日期输入日期时间,所以我认为不使用撇号会工作,但我被抛出这个错误:

ERROR:  invalid input syntax for type timestamp: ":from_date 06:00:00"
LINE 40: between ':from_date 06:00:00'

通常在 bash 脚本中这会起作用,因为它只传递文字字符串值,但在这种情况下,无论我在日期值周围放置没有或一组撇号,它都不会传递值(我假设因为 PSQL 处理设置变量的方式。

我知道有办法解决这个问题,但我正在寻找一个为什么会发生这样的事情的原因,以及是否有一种简单的方法来修复“无效的输入语法”——是否它是通过转换变量,以不同方式设置变量等。

非常感谢!

最佳答案

:from_date 是一个不是字符串的变量。

这里有一个方法:

 date :from_date + time ' 06:00:00'

请参阅 https://www.postgresql.org/docs/9.2/static/functions-datetime.html 上的文档

关于sql - PSQL:将设置日期变量传递到日期时间时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640216/

相关文章:

sql - 数据库设计帮助 - EAV + Form builder

javascript - 通过 Google 地方信息显示当前位置

sql - select 和 delete 语句中的 PostgreSQL 变量

sql - 优化 postgres 搜索查询的问题

php - Symfony2,设置日期时间字段的默认值

mysql - SQL 查询计数 = 0/null

php - 无法使用 LIKE 从 Wordpress 数据库获取结果

python - 在seaborn多面散点图中设置日期时间格式

mysql查询 - 如何查找不在特定日期内的项目

php - 将日期时间字段值添加到mysql中的整数字段值