interval conversion bug

Started by Andrzej Wojtaszekover 21 years ago3 messagesbugs
Jump to latest
#1Andrzej Wojtaszek
Andrzej.Wojtaszek@pro-futuro.com

Hi,

I'm afraid that operator ::interval not working propertly
example:

select 1
######################
select now() + (1||' day')::interval;
working propertly
######################

I have my function writen in plpgsql

function test(varchar) returns varchar;

select 2
######################
select my_name,
test('12')
from table1
######################

returns 'aaa', '12 MONTH'

working propertly

select 3
######################
select my_name
now() + (test('12'))::interval
from table1
######################

not working with error "cannot cast type character varying to iterval"

Facts
Database version 7.4.5
psql version 7.4.5
platform PIV
linux : Debian

Regards

Andrzej Wojtaszek

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrzej Wojtaszek (#1)
Re: interval conversion bug

"Andrzej Wojtaszek" <Andrzej.Wojtaszek@pro-futuro.com> writes:

not working with error "cannot cast type character varying to iterval"

8.0 is more flexible about that, but for the moment use type text
instead of varchar.

regards, tom lane

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Andrzej Wojtaszek (#1)
Re: interval conversion bug

On Thu, 25 Nov 2004, Andrzej Wojtaszek wrote:

I'm afraid that operator ::interval not working propertly
example:

select 1
######################
select now() + (1||' day')::interval;
working propertly
######################

This is a text -> interval conversion

select 3
######################
select my_name
now() + (test('12'))::interval
from table1
######################

This is a varchar -> interval conversion.

It looks like 7.4 doesn't have the latter conversion and requires you to
go through text to make the conversion. 8.0 appears to add direct
conversions from varchar.