generate_series() with TSTZRANGE
От | Wolfe Whalen |
---|---|
Тема | generate_series() with TSTZRANGE |
Дата | |
Msg-id | 1347493990.25573.140661127188777.1658803C@webmail.messagingengine.com обсуждение исходный текст |
Ответы |
Re: generate_series() with TSTZRANGE
|
Список | pgsql-sql |
Hi everyone! I'm new around here, so please forgive me if this is a bit trivial. It seems that generate_series() won't generate time stamp ranges. I googled around and didn't see anything handy, so I wrote this out and thought I'd share and see if perhaps there was a better way to do it: SELECT tstzrange((lag(a) OVER()), a, '[)') FROM generate_series('2012-09-16 12:00:00'::timestamp, '2012-09-17 12:00:00', '1 hour') AS a OFFSET 1; Basically, it's generating a series of time stamps one hour apart, then using the previous record and the current record to construct the TSTZRANGE value. It's offset 1 to skip the first record, since there is no previous record to pair with it. If you were looking at Josh Berkus' example at http://lwn.net/Articles/497069/ you might use it like this to generate data for testing and experimentation: INSERT INTO room_reservations SELECT 'F104', 'John', 'Another Talk', tstzrange((lag(a) OVER()), a, '[)') FROM generate_series('2012-09-16 12:00:00'::timestamp, '2012-09-17 12:00:00', '1 hour') AS a OFFSET 1; Thanks! -- Wolfe Whalen wolfe@quios.net
В списке pgsql-sql по дате отправления: