Обсуждение: Re: [SQL] sql date functions

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

Re: [SQL] sql date functions

От
BD Postgres
Дата:
Aleksey Dashevsky wrote:

> I think you need to rewrite this query with something like:
>
> insert into table1 (date1,date2) values('1997-2-3'::date,'1997-2-3'::date
>  + '1 week'::timespan);
>
> You can also use standard SQL-92 syntax for type casting, e.x.:
> cast ('1 week' as timespan )
>  etc.


You are right, but now postgres is reporting me that there is no '+' operator
defined for time and timespan, but I have found that I can add integers to
dates and they are threaded as days so I can solve my problem easily.

Thank you very much!

  - Salva.


Re: [SQL] sql date functions

От
Aleksey Dashevsky
Дата:

On Mon, 6 Jul 1998, BD Postgres wrote:

> Aleksey Dashevsky wrote:
>
> > I think you need to rewrite this query with something like:
> >
> > insert into table1 (date1,date2) values('1997-2-3'::date,'1997-2-3'::date
> >  + '1 week'::timespan);
> >
> > You can also use standard SQL-92 syntax for type casting, e.x.:
> > cast ('1 week' as timespan )
> >  etc.
>
>
> You are right, but now postgres is reporting me that there is no '+' operator
> defined for time and timespan, but I have found that I can add integers to
> dates and they are threaded as days so I can solve my problem easily.
>

Sorry, I really forgot: if you want to use date interval you need datetime
type instead of date. Unforunately, postgres can only add timespan to
datetime, but not to date, and  also it doesn't have autoconversion from
date to datetime:-(

So, you eihter need to change all mentions of date type with datetime
(don't forget to change it also in "create table"), or you need to cast
back datetime to date:

insert into table1 (date1,date2) values('1997-2-3'::date,('1997-2-3'::datetime
  + '1 week'::timespan)::date );



Re: [SQL] sql date functions

От
BD Postgres
Дата:
Aleksey Dashevsky wrote:

> Sorry, I really forgot: if you want to use date interval you need datetime
> type instead of date. Unforunately, postgres can only add timespan to
> datetime, but not to date, and  also it doesn't have autoconversion from
> date to datetime:-(
>
> So, you eihter need to change all mentions of date type with datetime
> (don't forget to change it also in "create table"), or you need to cast
> back datetime to date:
>
> insert into table1 (date1,date2) values('1997-2-3'::date,('1997-2-3'::datetime
>   + '1 week'::timespan)::date );

I'm using now dates and integers and it seems to work from psql although it's
giving me some problems from perl.

insert into quinielas (id,temporada,jornada,inicio,final) values
(13,1,1,'1-2-3'::date,'1-2-3'::date + 3);
works from psql ok, but when I try to do it from perl with DBI with

$sth->prepare('... values (?,?,?,?::date+?,?::date+?)');
$sth->execute(13,1,1,'1-2-3',3,'1-2-3',5);

it fails with a 'parameter unknown' error to the perl side although the postmaster
do not report any error. It seems to me this is more from perl that from postgres,
but anyway, some idea ?

  - Salva.