Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch |
Date | |
Msg-id | 1003794.1616532721@sss.pgh.pa.us Whole thread Raw |
In response to | Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>) |
List | pgsql-hackers |
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes: > On 19.03.21 21:06, Tom Lane wrote: >> I guess the immediate question is how much of a performance gap there >> is now between the float and numeric implementations. > Attached are my test script and the full output. OK ... I prefer to do this sort of timing in a way that's not so dependent on client I/O speeds, along the lines of select count(date_part('day', current_date + g * interval '1 day')) from generate_series(0, :N) g; I applied the v5 patch and ran your test suite that way, producing the attached results. It looks pretty promising for me, too. Most of the cases show about 10%-15% degradation: # select extract, date_part, extract/date_part as ratio, unit from (select sum(msec) filter (where fn = 'extract') as extract,sum(msec) filter (where fn = 'date_part') as date_part, unit from timings group by unit) ss order by ratio; extract | date_part | ratio | unit -----------+-----------+------------------------+----------------- 22690.100 | 20705.402 | 1.09585411575201486066 | decade 22810.005 | 20754.296 | 1.09904980636298142804 | century 11238.122 | 10190.385 | 1.10281623314526389337 | timezone_minute 20201.992 | 18303.982 | 1.1036938301184955 | doy 20121.073 | 18206.290 | 1.1051715094069138 | dow 23209.090 | 20915.715 | 1.10964841507928368693 | millennium 18839.455 | 16943.063 | 1.11192734159106886399 | week 20130.843 | 18010.011 | 1.1177585066438882 | isoyear 19755.296 | 17668.497 | 1.11810846163089027890 | isodow 22500.373 | 20112.264 | 1.11873894455641592612 | day 22631.485 | 20200.266 | 1.12035579135443067928 | month 22883.344 | 20407.733 | 1.12130749652594925659 | quarter 22628.524 | 20172.361 | 1.12175882634660365239 | year 26503.545 | 23493.288 | 1.12813263941598979249 | minute 26381.817 | 23329.924 | 1.13081452815705700542 | hour 27236.886 | 24070.860 | 1.13152940941869131390 | microseconds 11563.820 | 9948.148 | 1.1624093248311143 | timezone_hour 27728.212 | 23567.973 | 1.17652086583771968849 | second 28348.328 | 23984.219 | 1.18195751965073367617 | milliseconds 49902.129 | 30798.034 | 1.6203024193037776 | epoch 31544.035 | 18250.745 | 1.7283697186060076 | julian (21 rows) The outliers are epoch and julian, which unsurprisingly are the ones you didn't fix yet. I think a ten-percent-ish slowdown is acceptable for this purpose, so I think if you can address the points already raised then we're pretty much good to go with this. regards, tom lane \set ECHO all \timing on \set N 10000000 -- date select count(date_part('day', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('month', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('quarter', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('week', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('year', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('decade', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('century', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('millennium', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('julian', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('isoyear', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('dow', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('isodow', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('doy', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(date_part('epoch', current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(day from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(month from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(quarter from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(week from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(year from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(decade from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(century from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(millennium from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(julian from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(isoyear from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(dow from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(isodow from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(doy from current_date + g * interval '1 day')) from generate_series(0, :N) g; select count(extract(epoch from current_date + g * interval '1 day')) from generate_series(0, :N) g; -- time select count(date_part('microseconds', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('milliseconds', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('second', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('minute', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('hour', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('epoch', localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(microseconds from localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(milliseconds from localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(second from localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(minute from localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(hour from localtime + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(epoch from localtime + g * interval '1 second')) from generate_series(0, :N) g; -- timetz select count(date_part('microseconds', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('milliseconds', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('second', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('minute', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('hour', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('timezone_minute', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('timezone_hour', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('epoch', current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(microseconds from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(milliseconds from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(second from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(minute from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(hour from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(timezone_minute from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(timezone_hour from current_time + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(epoch from current_time + g * interval '1 second')) from generate_series(0, :N) g; -- timestamp select count(date_part('microseconds', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('milliseconds', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('second', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('minute', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('hour', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('day', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('month', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('quarter', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('week', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('year', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('decade', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('century', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('millennium', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('julian', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('isoyear', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('dow', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('isodow', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('doy', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('epoch', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(microseconds from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(milliseconds from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(second from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(minute from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(hour from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(day from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(month from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(quarter from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(week from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(year from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(decade from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(century from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(millennium from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(julian from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(isoyear from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(dow from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(isodow from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(doy from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(epoch from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g; -- timestamptz select count(date_part('microseconds', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('milliseconds', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('second', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('minute', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('hour', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('day', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('month', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('quarter', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('week', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('year', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('decade', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('century', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('millennium', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('julian', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('isoyear', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('dow', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('isodow', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('doy', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('timezone_minute', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('timezone_hour', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('epoch', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(microseconds from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(milliseconds from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(second from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(minute from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(hour from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(day from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(month from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(quarter from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(week from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(year from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(decade from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(century from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(millennium from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(julian from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(isoyear from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(dow from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(isodow from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(doy from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(timezone_minute from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(timezone_hour from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; select count(extract(epoch from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g; -- interval select count(date_part('microseconds', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('milliseconds', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('second', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('minute', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('hour', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('day', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('month', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('quarter', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('year', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('decade', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('century', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('millennium', g * interval '1 second')) from generate_series(0, :N) g; select count(date_part('epoch', g * interval '1 second')) from generate_series(0, :N) g; select count(extract(microseconds from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(milliseconds from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(second from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(minute from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(hour from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(day from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(month from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(quarter from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(year from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(decade from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(century from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(millennium from g * interval '1 second')) from generate_series(0, :N) g; select count(extract(epoch from g * interval '1 second')) from generate_series(0, :N) g; -- -- PostgreSQL database dump -- -- Dumped from database version 14devel -- Dumped by pg_dump version 14devel SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'SQL_ASCII'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET default_toast_compression = 'pglz'; SET check_function_bodies = false; SET xmloption = content; SET client_min_messages = warning; SET row_security = off; SET default_tablespace = ''; SET default_table_access_method = heap; -- -- Name: timings; Type: TABLE; Schema: public; Owner: postgres -- CREATE TABLE public.timings ( msec numeric, fn text, unit text, value text ); ALTER TABLE public.timings OWNER TO postgres; -- -- Data for Name: timings; Type: TABLE DATA; Schema: public; Owner: postgres -- COPY public.timings (msec, fn, unit, value) FROM stdin; 5180.515 date_part day current_date + g * interval '1 day' 5203.787 date_part month current_date + g * interval '1 day' 5306.675 date_part quarter current_date + g * interval '1 day' 5414.957 date_part week current_date + g * interval '1 day' 5197.415 date_part year current_date + g * interval '1 day' 5233.880 date_part decade current_date + g * interval '1 day' 5259.760 date_part century current_date + g * interval '1 day' 5377.774 date_part millennium current_date + g * interval '1 day' 5917.525 date_part julian current_date + g * interval '1 day' 5759.533 date_part isoyear current_date + g * interval '1 day' 5754.813 date_part dow current_date + g * interval '1 day' 5655.134 date_part isodow current_date + g * interval '1 day' 6028.292 date_part doy current_date + g * interval '1 day' 5991.237 date_part epoch current_date + g * interval '1 day' 5771.943 extract day current_date + g * interval '1 day' 5776.346 extract month current_date + g * interval '1 day' 5838.696 extract quarter current_date + g * interval '1 day' 6017.475 extract week current_date + g * interval '1 day' 5797.537 extract year current_date + g * interval '1 day' 5810.704 extract decade current_date + g * interval '1 day' 5838.451 extract century current_date + g * interval '1 day' 5881.487 extract millennium current_date + g * interval '1 day' 9049.921 extract julian current_date + g * interval '1 day' 6353.854 extract isoyear current_date + g * interval '1 day' 6330.941 extract dow current_date + g * interval '1 day' 6202.410 extract isodow current_date + g * interval '1 day' 6348.026 extract doy current_date + g * interval '1 day' 10145.366 extract epoch current_date + g * interval '1 day' 4283.332 date_part microseconds localtime + g * interval '1 second' 4206.173 date_part milliseconds localtime + g * interval '1 second' 4111.950 date_part second localtime + g * interval '1 second' 4091.874 date_part minute localtime + g * interval '1 second' 4120.468 date_part hour localtime + g * interval '1 second' 4323.501 date_part epoch localtime + g * interval '1 second' 4786.541 extract microseconds localtime + g * interval '1 second' 4999.648 extract milliseconds localtime + g * interval '1 second' 4892.576 extract second localtime + g * interval '1 second' 4681.172 extract minute localtime + g * interval '1 second' 4605.876 extract hour localtime + g * interval '1 second' 5136.200 extract epoch localtime + g * interval '1 second' 4411.680 date_part microseconds current_time + g * interval '1 second' 4432.563 date_part milliseconds current_time + g * interval '1 second' 4374.950 date_part second current_time + g * interval '1 second' 4294.787 date_part minute current_time + g * interval '1 second' 4258.783 date_part hour current_time + g * interval '1 second' 4563.066 date_part timezone_minute current_time + g * interval '1 second' 4457.659 date_part timezone_hour current_time + g * interval '1 second' 4647.430 date_part epoch current_time + g * interval '1 second' 5075.710 extract microseconds current_time + g * interval '1 second' 5233.760 extract milliseconds current_time + g * interval '1 second' 5126.352 extract second current_time + g * interval '1 second' 4872.501 extract minute current_time + g * interval '1 second' 4889.788 extract hour current_time + g * interval '1 second' 4955.501 extract timezone_minute current_time + g * interval '1 second' 5015.217 extract timezone_hour current_time + g * interval '1 second' 5377.584 extract epoch current_time + g * interval '1 second' 5955.346 date_part microseconds localtimestamp + g * interval '1 second' 5935.035 date_part milliseconds localtimestamp + g * interval '1 second' 5848.145 date_part second localtimestamp + g * interval '1 second' 5831.416 date_part minute localtimestamp + g * interval '1 second' 5803.652 date_part hour localtimestamp + g * interval '1 second' 5769.468 date_part day localtimestamp + g * interval '1 second' 5819.778 date_part month localtimestamp + g * interval '1 second' 5849.743 date_part quarter localtimestamp + g * interval '1 second' 6014.519 date_part week localtimestamp + g * interval '1 second' 5784.959 date_part year localtimestamp + g * interval '1 second' 6172.807 date_part decade localtimestamp + g * interval '1 second' 6222.657 date_part century localtimestamp + g * interval '1 second' 6182.300 date_part millennium localtimestamp + g * interval '1 second' 6583.064 date_part julian localtimestamp + g * interval '1 second' 6367.773 date_part isoyear localtimestamp + g * interval '1 second' 6344.974 date_part dow localtimestamp + g * interval '1 second' 6246.871 date_part isodow localtimestamp + g * interval '1 second' 6382.862 date_part doy localtimestamp + g * interval '1 second' 6596.429 date_part epoch localtimestamp + g * interval '1 second' 6496.251 extract microseconds localtimestamp + g * interval '1 second' 6761.816 extract milliseconds localtimestamp + g * interval '1 second' 6631.913 extract second localtimestamp + g * interval '1 second' 6392.654 extract minute localtimestamp + g * interval '1 second' 6354.535 extract hour localtimestamp + g * interval '1 second' 6346.387 extract day localtimestamp + g * interval '1 second' 6360.977 extract month localtimestamp + g * interval '1 second' 6434.271 extract quarter localtimestamp + g * interval '1 second' 6542.497 extract week localtimestamp + g * interval '1 second' 6362.930 extract year localtimestamp + g * interval '1 second' 6387.618 extract decade localtimestamp + g * interval '1 second' 6434.422 extract century localtimestamp + g * interval '1 second' 6466.045 extract millennium localtimestamp + g * interval '1 second' 11359.495 extract julian localtimestamp + g * interval '1 second' 6919.297 extract isoyear localtimestamp + g * interval '1 second' 6910.778 extract dow localtimestamp + g * interval '1 second' 6787.230 extract isodow localtimestamp + g * interval '1 second' 6948.939 extract doy localtimestamp + g * interval '1 second' 10450.228 extract epoch localtimestamp + g * interval '1 second' 5453.363 date_part microseconds current_timestamp + g * interval '1 second' 5450.235 date_part milliseconds current_timestamp + g * interval '1 second' 5346.234 date_part second current_timestamp + g * interval '1 second' 5324.099 date_part minute current_timestamp + g * interval '1 second' 5302.169 date_part hour current_timestamp + g * interval '1 second' 5328.442 date_part day current_timestamp + g * interval '1 second' 5319.765 date_part month current_timestamp + g * interval '1 second' 5351.117 date_part quarter current_timestamp + g * interval '1 second' 5513.587 date_part week current_timestamp + g * interval '1 second' 5290.259 date_part year current_timestamp + g * interval '1 second' 5406.541 date_part decade current_timestamp + g * interval '1 second' 5370.052 date_part century current_timestamp + g * interval '1 second' 5417.243 date_part millennium current_timestamp + g * interval '1 second' 5750.156 date_part julian current_timestamp + g * interval '1 second' 5882.705 date_part isoyear current_timestamp + g * interval '1 second' 6106.503 date_part dow current_timestamp + g * interval '1 second' 5766.492 date_part isodow current_timestamp + g * interval '1 second' 5892.828 date_part doy current_timestamp + g * interval '1 second' 5627.319 date_part timezone_minute current_timestamp + g * interval '1 second' 5490.489 date_part timezone_hour current_timestamp + g * interval '1 second' 5187.254 date_part epoch current_timestamp + g * interval '1 second' 6291.630 extract microseconds current_timestamp + g * interval '1 second' 6442.536 extract milliseconds current_timestamp + g * interval '1 second' 6336.514 extract second current_timestamp + g * interval '1 second' 6102.246 extract minute current_timestamp + g * interval '1 second' 6104.173 extract hour current_timestamp + g * interval '1 second' 6060.887 extract day current_timestamp + g * interval '1 second' 6096.743 extract month current_timestamp + g * interval '1 second' 6130.391 extract quarter current_timestamp + g * interval '1 second' 6279.483 extract week current_timestamp + g * interval '1 second' 6132.714 extract year current_timestamp + g * interval '1 second' 6123.841 extract decade current_timestamp + g * interval '1 second' 6131.588 extract century current_timestamp + g * interval '1 second' 6173.388 extract millennium current_timestamp + g * interval '1 second' 11134.619 extract julian current_timestamp + g * interval '1 second' 6857.692 extract isoyear current_timestamp + g * interval '1 second' 6879.354 extract dow current_timestamp + g * interval '1 second' 6765.656 extract isodow current_timestamp + g * interval '1 second' 6905.027 extract doy current_timestamp + g * interval '1 second' 6282.621 extract timezone_minute current_timestamp + g * interval '1 second' 6548.603 extract timezone_hour current_timestamp + g * interval '1 second' 9169.715 extract epoch current_timestamp + g * interval '1 second' 3967.139 date_part microseconds g * interval '1 second' 3960.213 date_part milliseconds g * interval '1 second' 3886.694 date_part second g * interval '1 second' 3951.112 date_part minute g * interval '1 second' 3844.852 date_part hour g * interval '1 second' 3833.839 date_part day g * interval '1 second' 3856.936 date_part month g * interval '1 second' 3900.198 date_part quarter g * interval '1 second' 3899.728 date_part year g * interval '1 second' 3892.174 date_part decade g * interval '1 second' 3901.827 date_part century g * interval '1 second' 3938.398 date_part millennium g * interval '1 second' 4052.183 date_part epoch g * interval '1 second' 4586.754 extract microseconds g * interval '1 second' 4910.568 extract milliseconds g * interval '1 second' 4740.857 extract second g * interval '1 second' 4454.972 extract minute g * interval '1 second' 4427.445 extract hour g * interval '1 second' 4321.156 extract day g * interval '1 second' 4397.419 extract month g * interval '1 second' 4479.986 extract quarter g * interval '1 second' 4335.343 extract year g * interval '1 second' 4367.937 extract decade g * interval '1 second' 4405.544 extract century g * interval '1 second' 4688.170 extract millennium g * interval '1 second' 9623.036 extract epoch g * interval '1 second' \. -- -- PostgreSQL database dump complete --
pgsql-hackers by date: