【问题标题】:Prepared statement with date added by interval as parameter in Postgresql在 Postgresql 中按间隔添加日期作为参数的准备好的语句
【发布时间】:2016-02-25 11:22:38
【问题描述】:

这行得通:

String query = "select DATE '2016-03-16' + interval '7 days'";

但我想在准备好的语句中使用 '2016-03-16' 和 7 作为参数。怎么做?

我试过这样,但没有用:

String query = "select DATE ? + interval ?";
Object param[] = {"2016-03-16", "7 days"};

【问题讨论】:

  • 或许select cast(? as date) + cast(?...

标签: sql postgresql date prepared-statement


【解决方案1】:

尝试类似:

select to_date(?, 'YYYY-MM-DD') + cast(? as interval)

其他选项是使用类似的东西

select cast(? as date) + cast(? as interval)

但这取决于日期转换的当前语言环境

【讨论】:

  • 这个解决方案帮助了我。谢谢!出于好奇,您知道为什么 $1::interval 转换等效项不起作用吗?
【解决方案2】:

如果使用 Java,我想说最干净的方法是使用 org.postgresql.util.PGInterval

将您的查询设置如下(不要提及“间隔”):

String query = "select DATE ? + ?";

并以这种方式添加您准备好的语句值:

stmt.setDate(1, java.sql.Date.valueOf("2016-03-16"));
stmt.setObject(2, new PGInterval(0, 0, 7, 0, 0, 0));

实际上,使用PGInterval 代表整个interval '7 days'

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多