Thread: 'now' runtime

From:
Karel Zak
Date:

Why is there so different "Total runtime" for ('now'::text)::date) and
'2005-04-06'::date ?

I think both is constant during execution.

CREATE TABLE test (     _time timestamp with time zone,     _platform character(5),     _tld character(5)
) WITHOUT OIDS;


explain analyze SELECT count(*) from test where
_time::date=CURRENT_DATE;                                            QUERY PLAN
----------------------------------------------------------------------------------------------------Aggregate
(cost=0.01..0.01rows=1 width=0) (actual time=0.026..0.029
 
rows=1 loops=1)  ->  Seq Scan on test  (cost=0.00..0.00 rows=1 width=0) (actual
time=0.004..0.004 rows=0 loops=1)        Filter: ((_time)::date = ('now'::text)::date)Total runtime: 24.034 ms
    ^^^^^^^^
 


explain analyze SELECT count(*) from test where
_time::date='2005-04-06'::date;                                            QUERY PLAN
----------------------------------------------------------------------------------------------------Aggregate
(cost=0.01..0.01rows=1 width=0) (actual time=0.015..0.018
 
rows=1 loops=1)  ->  Seq Scan on test  (cost=0.00..0.00 rows=1 width=0) (actual
time=0.004..0.004 rows=0 loops=1)        Filter: ((_time)::date = '2005-04-06'::date)Total runtime: 0.065 ms
  ^^^^^^^^
 
Karel

-- 
Karel Zak <>



From:
Tom Lane
Date:

Karel Zak <> writes:
> Why is there so different "Total runtime" for ('now'::text)::date) and
> '2005-04-06'::date ?

> I think both is constant during execution.

Not at all. text_date() is not immutable so it has to be applied during
execution.  The other one is just a constant.
        regards, tom lane