casting... adding integer to timestamp

Started by Mark Gibsonalmost 20 years ago5 messagesgeneral
Jump to latest
#1Mark Gibson
mark@gibsonsoftware.com

If play_length is a timestamp, I can do this:

SELECT play_length - INTERVAL '13 seconds' ...

But what if play_seconds is a column?

SELECT play_length - INTERVAL 'play_seconds seconds' ...

This doesn't work.

ERROR: invalid input syntax for type interval: "play_seconds seconds"

Can anyone help?

Thanks,
Mark

#2Michael Glaesemann
grzm@seespotcode.net
In reply to: Mark Gibson (#1)
Re: casting... adding integer to timestamp

On Jun 25, 2006, at 14:23 , Mark Gibson wrote:

SELECT play_length - INTERVAL 'play_seconds seconds' ...

The column isn't interpolated into the string. Try

SELECT play_length - play_seconds * INTERVAL '1 second'

Hope this helps.

Michael Glaesemann
grzm seespotcode net

#3Frank Finner
postgresql@finner.de
In reply to: Mark Gibson (#1)
Re: casting... adding integer to timestamp

On Sat, 24 Jun 2006 23:23:57 -0600 Mark Gibson <mark@gibsonsoftware.com> thought long, then sat down and wrote:

If play_length is a timestamp, I can do this:

SELECT play_length - INTERVAL '13 seconds' ...

But what if play_seconds is a column?

SELECT play_length - INTERVAL 'play_seconds seconds' ...

This doesn't work.

ERROR: invalid input syntax for type interval: "play_seconds seconds"

SELECT play_length - play_seconds...
should do the trick, if play_sconds is of type interval. Otherwise you must explicitly cast it like
SELECT play_length - play_seconds::interval...

Regards,
--
Frank Finner

Invenius - Lösungen mit Linux
Köpfchenstraße 36
57072 Siegen
Telefon: 0271 231 8606 Mail: frank.finner@invenius.de
Telefax: 0271 231 8608 Web: http://www.invenius.de
Key fingerprint = 90DF FF40 582E 6D6B BADF 6E6A A74E 67E4 E788 2651

#4Alex Pavlovic
alex.pavlovic@taskforce-1.com
In reply to: Mark Gibson (#1)
Re: casting... adding integer to timestamp

Yet another way, this time being more explicit.

SELECT play_length - play_seconds * '1 second'::interval

Cheers.

Show quoted text

On Saturday 24 June 2006 22:23, Mark Gibson wrote:

If play_length is a timestamp, I can do this:

SELECT play_length - INTERVAL '13 seconds' ...

But what if play_seconds is a column?

SELECT play_length - INTERVAL 'play_seconds seconds' ...

This doesn't work.

ERROR: invalid input syntax for type interval: "play_seconds seconds"

Can anyone help?

Thanks,
Mark

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

#5Mark Gibson
mark@gibsonsoftware.com
In reply to: Michael Glaesemann (#2)
Re: casting... adding integer to timestamp

Michael Glaesemann wrote:

On Jun 25, 2006, at 14:23 , Mark Gibson wrote:

SELECT play_length - INTERVAL 'play_seconds seconds' ...

The column isn't interpolated into the string. Try

SELECT play_length - play_seconds * INTERVAL '1 second'

That worked great! Thanks!

Mark