0

我正在尝试将修改日期(字段类型:时间戳)与基于当前日期前一个月的值进行比较。使用函数 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

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

4

1 回答 1

0

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

SQL 语句中的语法错误

为什么它应该起作用

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

解决方案

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

于 2020-10-23T19:29:06.710 回答