From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Arjen Nienhuis <a(dot)g(dot)nienhuis(at)gmail(dot)com>, Roberto Balarezo <rober710(at)gmail(dot)com> |
Cc: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Fwd: Query parameter types not recognized |
Date: | 2017-02-10 21:44:34 |
Message-ID: | 25d262e9-313c-f794-1a52-bba8bd8433ef@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 02/10/2017 01:33 PM, Arjen Nienhuis wrote:
>
>
> On Feb 10, 2017 8:11 PM, "Roberto Balarezo" <rober710(at)gmail(dot)com
> <mailto:rober710(at)gmail(dot)com>> wrote:
>
> Hi, I would like to know why this is happening and some advice if
> there is a way to solve this problem:
>
> I have a query like this:
>
> |select COALESCE(duedate, ? + 1) from invoices order by duedate desc
> limit 10; |
>
> where ? is a query parameter. I’m using JDBC to connect to the
> database, and sending parameters like this:
>
> |query.setDate(1, defaultDueDate); |
>
> If you want to add to a date you cannot just add 1. You need an
> interval: coalesce(duedate, ? + interval '1 day')
>
> See:
>
> https://www.postgresql.org/docs/9.6/static/functions-datetime.html
Actually that is not the case, from above docs:
"Also, the + and * operators come in commutative pairs (for example both
date + integer and integer + date); we show only one of each such pair."
and:
test=# select current_date;
date
------------
2017-02-10
(1 row)
test=# select current_date + 1;
?column?
------------
2017-02-11
(1 row)
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Roberto Balarezo | 2017-02-10 21:51:24 | Re: Fwd: Query parameter types not recognized |
Previous Message | Roberto Balarezo | 2017-02-10 21:43:52 | Re: Fwd: Query parameter types not recognized |