【发布时间】:2019-07-08 18:10:51
【问题描述】:
我正在尝试将修改日期(字段类型:时间戳)与基于当前日期前一个月的值进行比较。使用函数 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
//EDIT: 添加了我使用的程序
【问题讨论】:
-
这些错误都不是由 Firebird 生成的。请提供minimal reproducible example 并描述您是如何执行此操作的(例如,使用哪种工具、库、编程语言等)。
-
HY000 似乎是 OpenOffice 错误,提示无法找到 JDBC 驱动程序或无法建立连接ask.libreoffice.org/en/question/33841/…
-
@Arioch'我不确定在没有得到 OP 确认的情况下添加诸如 openoffice-base 之类的标签是正确的做法。 HY000 是客户端错误的标准 SQL 状态。 Firebird 本身也经常使用它(参见 github.com/FirebirdSQL/firebird/blob/master/src/msgs/…,这是 Firebird 应用的 SQL 状态映射)
-
我仍然不认为你使用 Firebird。你也许确实这么认为,但我认为事实并非如此。也许你使用 HSQLDB 什么的。尝试查询
SELECT * FROM RDB$DATABASE- 会起作用吗? -
我想到的另一个可能的原因 - 我没有使用 OpenOffice Base,所以我不确定它的细节 - 如果 OpenOffice 的功能不是 Firebird 的功能,则上面的
DateAdd功能,因此,您必须添加一些筛选,以禁止 OpenOffice 使用其自己的功能,并且只是将名称原样传递给 Firebird。 help.libreoffice.org/Basic/DateAdd_Function_Runtime我正在重新添加 OOo 标记,因为 LO 和 OOo 是仍然相当接近且基本问题可能相交的分叉。
标签: firebird dateadd libreoffice-base openoffice-base