Обсуждение: Do cast affects index usage?
I have a table with a column of type timestamp with time zone, this column has an index
If I do a select like this
select * from mytable where cast(my_date as timestamp without time zone) > '2012-10-12 20:00:00'
this query will use the index over the my_date column?
Thanks
On Fri, Oct 12, 2012 at 2:05 PM, Anibal David Acosta <aa@devshock.com> wrote: > I have a table with a column of type timestamp with time zone, this column > has an index > > If I do a select like this > > select * from mytable where cast(my_date as timestamp without time zone) > > '2012-10-12 20:00:00' > > this query will use the index over the my_date column? No. but it will use a functional index: create index yada on blah (cast(my_date as timestaqmp without time zone));
"Anibal David Acosta" <aa@devshock.com> writes: > I have a table with a column of type timestamp with time zone, this column > has an index > If I do a select like this > select * from mytable where cast(my_date as timestamp without time zone) > > '2012-10-12 20:00:00' > this query will use the index over the my_date column? No. The cast seems rather pointless though ... regards, tom lane
Because I need to get all rows where datetime is greater than (for example) '2012-10-10 00:00:00' but ignoring timezone, so basically I need to truncate timezone This can be done by converting to timestamp without timezone. -----Mensaje original----- De: Tom Lane [mailto:tgl@sss.pgh.pa.us] Enviado el: viernes, 12 de octubre de 2012 05:39 p.m. Para: Anibal David Acosta CC: pgsql-performance@postgresql.org Asunto: Re: [PERFORM] Do cast affects index usage? "Anibal David Acosta" <aa@devshock.com> writes: > I have a table with a column of type timestamp with time zone, this > column has an index > If I do a select like this > select * from mytable where cast(my_date as timestamp without time > zone) > > '2012-10-12 20:00:00' > this query will use the index over the my_date column? No. The cast seems rather pointless though ... regards, tom lane
"Anibal David Acosta" <aa@devshock.com> writes: > Because I need to get all rows where datetime is greater than (for example) > '2012-10-10 00:00:00' but ignoring timezone, so basically I need to truncate > timezone > This can be done by converting to timestamp without timezone. [ shrug... ] It can also be done without that. Whatever your cutoff time is can be expressed as a timestamp *with* tz. regards, tom lane