Re: [SQL] timestamp/now in views

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [SQL] timestamp/now in views
Дата
Msg-id 29104.944702156@sss.pgh.pa.us
обсуждение исходный текст
Ответ на timestamp/now in views  ("Graeme Merrall" <gmerrall@email.com>)
Список pgsql-sql
"Graeme Merrall" <gmerrall@email.com> writes:
> I tried creating a view using the following syntax
> CREATE VIEW prev_day AS SELECT * FROM audit WHERE audit_datetime >
> (current_timestamp - interval'24 hours');

> Now as some of you will pick up, this creates a view with the current
> timestamp set to the creation time of the view, not the actual time the view
> was executed.

Yes --- this is fixed in current sources, but that doesn't help you on
release versions :-(

> I hacked around with various combos of quote marks and tried now() and so
> on, but to no avail.

Just substituting now() for current_timestamp seemed to work fine for
me in 6.5.3:

play=> CREATE VIEW prev_day AS SELECT * FROM audit WHERE audit_datetime >
play-> (now() - interval'24 hours');                                     
CREATE
play=> \d prev_day                                                       
View    = prev_day
Query   = SELECT "audit"."f1", "audit"."audit_datetime" FROM "audit" WHERE ("datetime"("audit"."audit_datetime") >
("datetime"("now"())- '@ 1 day'::"timespan"));
 

As you can see, the stored form of the query still has now() rather than
a constant datetime value...
        regards, tom lane


В списке pgsql-sql по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: [SQL] turning a table by 90 degrees
Следующее
От: De Moudt Walter
Дата:
Сообщение: Re: [SQL] subquery, except and view