【发布时间】:2018-03-23 09:52:31
【问题描述】:
我在将时间戳参数传递给 psql 时遇到问题。在$since 变量中,我可以根据 SQL 标准格式化任何字符串,然后我将这个值传递给 sql,如下所示:
首先我检查$since 的格式是否正确(如果失败则不会继续):
1)psql --command "SELECT ($since)::TIMESTAMPTZ;"
其次,我在函数中使用该值(它以 timestamptz 作为输入参数):
2)cmd="SELECT myfunc($since);"
psql --command "$cmd" $DBNAME
工作:如果since="NOW() - INTERVAL '5 months'"
不起作用:如果since="2017-10-23 10:42:48"(它在第1行失败:SELECT(2017-10-23 10: 42:48)::TIMESTAMPTZ; 错误)
我试图用 ', ", \ 字符以某种方式转义 $since 字符串,但是在 bash 和 sql 中的多次组合之后我放弃了。
在这种情况下,正确的逃生方法是什么?
【问题讨论】:
标签: bash timestamp escaping psql