Обсуждение: convert integer to interval ?

Поиск
Список
Период
Сортировка

convert integer to interval ?

От
pilsl@goldfisch.at
Дата:
Sorry, I dont get familar with timefunctions in 7.3.2.  I just
upgraded and I need a function that adds a given interval in days to a
given timestamp.

something like
select current_timestamp+interval '7 days';

in my table the 7 is given as integer. And I dont get the conversion
from this integer to interval where the integernumber is in days.

thnx,
peter

--
mag. peter pilsl
IT-Consulting
tel: +43-699-1-3574035
fax: +43-699-4-3574035
pilsl@goldfisch.at
http://www.goldfisch.at

Re: convert integer to interval ?

От
"Magnus Naeslund(f)"
Дата:
pilsl@goldfisch.at wrote:
> Sorry, I dont get familar with timefunctions in 7.3.2.  I just
> upgraded and I need a function that adds a given interval in days to a
> given timestamp.
>
> something like
> select current_timestamp+interval '7 days';
>
> in my table the 7 is given as integer. And I dont get the conversion
> from this integer to interval where the integernumber is in days.

Is there any reason why you can't do:

sprintf(buf,"select current_timestamp+interval '%d days'",int_days);

Magnus


Re: convert integer to interval ?

От
Stephan Szabo
Дата:
On Sat, 8 Feb 2003 pilsl@goldfisch.at wrote:

> Sorry, I dont get familar with timefunctions in 7.3.2.  I just
> upgraded and I need a function that adds a given interval in days to a
> given timestamp.
>
> something like
> select current_timestamp+interval '7 days';
>
> in my table the 7 is given as integer. And I dont get the conversion
> from this integer to interval where the integernumber is in days.

One way is to make an interval string and cast it (something like)
select current_timestamp + CAST(num || ' days' AS interval);


Re: convert integer to interval ?

От
Tom Lane
Дата:
"Magnus Naeslund(f)" <mag@fbab.net> writes:
> pilsl@goldfisch.at wrote:
>> something like
>> select current_timestamp+interval '7 days';

> Is there any reason why you can't do:

> sprintf(buf,"select current_timestamp+interval '%d days'",int_days);

Also, if you really only want the result to the nearest day, date
arithmetic (as opposed to timestamp arithmetic) works the way you want.
For example,

regression=# select current_date, current_date + 7;
    date    |  ?column?
------------+------------
 2003-02-08 | 2003-02-15
(1 row)


            regards, tom lane