【问题标题】:Add Interval to date in HSQLDB based on other column根据其他列在 HSQLDB 中添加日期间隔
【发布时间】:2016-01-07 08:27:58
【问题描述】:

我使用 hsqldb 作为单元测试的内存数据库,生产系统使用 mysql 运行。以下查询适用于 mysql,但不适用于 hsqldb:

select * from table where columnTimestamp + INTERVAL 'columnDays' DAY < now();

我想检索间隔基于另一列的所有特定行。当我使用固定值时,它确实适用于 hsqldb,但这不是必需的行为。

hsqldb 返回的错误信息:

data exception: invalid interval format / Error Code: -3406 / State: 22006

【问题讨论】:

    标签: sql hsqldb


    【解决方案1】:

    用你的列乘以一个恒定的间隔。

    select * 
    from table 
    where columnTimestamp + (INTERVAL '1' DAY * columndays) < now();
    

    【讨论】:

    • 好主意,但似乎这种语法在 mysql 和 hsqlb 中都无效。
    • @Dag:适用于我(当使用与 table 不同的表名时)与 HSQLDB 2.3,您使用的是哪个版本?
    • hsqldb 2.3.2,MySQL 中的 MySQL 5.6.x:...for the right syntax to use near ') * intervalDays &lt; now()' at line 3, SQLState: 42000, ErrorCode: 1064。在 hsqldb 我得到unexpected token: )
    • 这是一条 MySQL 错误消息,您要求查询 HSQLDB。在 HSQLDB 中,您可以尝试以不同的方式放置 )(请参阅我的编辑)。但这对我使用 HSQLDB 2.3.2 没有任何影响。
    • 在我描述的问题中,查询仅在 hsqldb 上执行以进行测试,因此它必须同样在 mysql 上运行。移动) 没有帮助,已经尝试过了,抱歉。我正在内存中运行 hsql 并使用 DatabaseManagerSwing 客户端。
    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多