FB3.0 Dateadd() throws syntax error in where section of query

504 Views Asked by At

I am trying to compare the date modified (field type: Timestamp) with a value that is based off of a month before the current date. I keep getting a syntax error when using the function DateAdd().

I Am Using Libreoffice base 6.2.3.2 (x64) and firebird 3.0 embedded

Using this code, I get a result returning no records but no error

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

but anytime I want to use the Dateadd() function, I get an error

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

Expected to Return a list of results that have been modified over a month ago.

Errors:

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: Added the programs that I used

1

There are 1 best solutions below

0
Qny On

I ran into the same problem. Though the SQL-statement with DateAdd() has been suggested as working, LO Base answered the query with a message box

Syntax error in SQL statement

Why it should work

In contrast the same SQL statement like in the query succeeded by running it in the "Execute SQL Statement" window (LO Base' main window menu "tools" > "SQL…").

Solution

What finally got my query to work was to check "Run SQL command directly" in the toolbar or in the "Edit" menu. This prevents LO from analyzing the SQL query before execution. This fails, because it is not understanding the full SQL statement (firebird's DateAdd()-function), and thus is the reason for the mentioned errors.