Thread: Error with a SQL query 'between .. and .. and'

Error with a SQL query 'between .. and .. and'

From
Turbo Fredriksson
Date:
This SQL query works in 7.1.3, but not in 7.2, how come?

select count(*) from log where starttime between now()-interval(60*60) and now() and statuscode='2';
ERROR:  parser: parse error at or near "*"

If I precalculate 60*60, I get this:

select count(*) from log where starttime between now()-interval(3600) and now() and statuscode='2';
ERROR:  parser: parse error at or near "and"


nuclear supercomputer explosion Marxist FBI Iran SEAL Team 6 quiche
Qaddafi nitrate class struggle South Africa counter-intelligence
attack Ortega
[See http://www.aclu.org/echelonwatch/index.html for more about this]


Re: Error with a SQL query 'between .. and .. and'

From
Tom Lane
Date:
Turbo Fredriksson <turbo@bayour.com> writes:
> This SQL query works in 7.1.3, but not in 7.2, how come?
> select count(*) from log where starttime between now()-interval(60*60) and now() and statuscode='2';
> ERROR:  parser: parse error at or near "*"

interval(n) is a type name now, as required by SQL92.

Try
"interval"(60*60)(60*60)::intervalCAST (60*60 AS interval)

Only the last of these is actually standard.
        regards, tom lane