type casting a subselect as an interval
How can I cast the return value of a sub-select as an interval?
Something like:
select current_timestamp - interval '(select days from T) days'
Thanks!
Jc
On Fri, Feb 21, 2003 at 07:59:19PM +0900, Jean-Christian Imbeault wrote:
How can I cast the return value of a sub-select as an interval?
Something like:
select current_timestamp - interval '(select days from T) days'
You can cast it in the subselect:
select current_timestamp - (select (days::text || 'd')::interval from T);
Karel
--
Karel Zak <zakkr@zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Karel Zak <zakkr@zf.jcu.cz> writes:
On Fri, Feb 21, 2003 at 07:59:19PM +0900, Jean-Christian Imbeault wrote:
How can I cast the return value of a sub-select as an interval?
select current_timestamp - interval '(select days from T) days'
You can cast it in the subselect:
select current_timestamp - (select (days::text || 'd')::interval from T);
A better way of converting numeric values to intervals is to rely on the
interval-times-float8 operator:
select current_timestamp - (select days from T) * interval '1 day';
This is readable, efficient, and easily adapted to other units (second,
month, etc).
regards, tom lane
On Fri, 21 Feb 2003, Tom Lane wrote:
Karel Zak <zakkr@zf.jcu.cz> writes:
On Fri, Feb 21, 2003 at 07:59:19PM +0900, Jean-Christian Imbeault wrote:
How can I cast the return value of a sub-select as an interval?
select current_timestamp - interval '(select days from T) days'You can cast it in the subselect:
select current_timestamp - (select (days::text || 'd')::interval from T);
A better way of converting numeric values to intervals is to rely on the
interval-times-float8 operator:select current_timestamp - (select days from T) * interval '1 day';
This is readable, efficient, and easily adapted to other units (second,
month, etc)
Since this comes up so often would it make sense to add it to the FAQ
(possibly along with a short description of what interval 'blah' means
since people seem to keep wanting to use it as a cast)