FB3.0 Dateadd()在查询的where部分抛出语法错误

时间:2019-07-08 18:10:51

标签: firebird dateadd libreoffice-base openoffice-base

我正在尝试将修改日期(字段类型:时间戳)与基于当前日期前一个月的值进行比较。使用函数DateAdd()时,我不断收到语法错误。

我正在使用Libreoffice base 6.2.3.2(x64)和嵌入式firebird 3.0

使用此代码,我得到一个不返回记录但没有错误的结果

Select *
From "tblPart"
Where "Date Modified" = Current_Timestamp

但是只要我想使用Dateadd()函数,我都会收到错误

Select *
From "tblPart"
Where
   "Date Modified"< Dateadd(Month,-1,Current_Timestamp)

预期返回一个月前已修改的结果列表。

错误:

SQL Status: HY000
Error code: 1000

Syntax error in SQL statement
SQL Status: HY000
Error code: 1000
SQL Status: HY000
Error code: 1000

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE

//编辑:添加了我使用的程序

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。尽管已建议使用带DateAdd()的SQL语句正常工作,但LO Base会在消息框中回答该查询

SQL语句中的语法错误

为什么应该起作用

相反,与查询中相同的SQL语句通过在“ Execute SQL Statement”窗口(LO Base的主窗口菜单“工具”>“ SQL…”)中运行它而成功。

解决方案

最终使我的查询生效的是在工具栏或“编辑”菜单中检查“直接运行SQL命令”。 这样可以防止LO在执行之前分析SQL查询。之所以失败,是因为它不了解完整的SQL语句(firebird的DateAdd()函数),因此是上述错误的原因。