Commit d1ab3eb7 authored by Tom Lane's avatar Tom Lane

Clean up the ancient decision to show only two fractional-seconds digits

in "postgres_verbose" intervalstyle, and the equally arbitrary decision to
show at least two fractional-seconds digits in most other datetime display
styles.  This results in some minor changes in the expected regression test
outputs.

Also, coalesce a lot of repetitive code in datetime.c into subroutines,
for clarity and ease of maintenance.  In particular this roughly halves
the number of #ifdef HAVE_INT64_TIMESTAMP segments.

Ron Mayer, with some additional kibitzing from Tom Lane
parent 466368b8
This diff is collapsed.
......@@ -423,9 +423,9 @@ SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
| Tue Feb 10 17:32:01 1998
| Tue Feb 10 17:32:01 1998
| Tue Feb 10 17:32:02 1998
| Tue Feb 10 17:32:01.40 1998
| Tue Feb 10 17:32:01.50 1998
| Tue Feb 10 17:32:01.60 1998
| Tue Feb 10 17:32:01.4 1998
| Tue Feb 10 17:32:01.5 1998
| Tue Feb 10 17:32:01.6 1998
| Fri Jan 02 00:00:00 1998
| Fri Jan 02 03:04:05 1998
| Tue Feb 10 17:32:01 1998
......@@ -493,9 +493,9 @@ SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
| Sat Feb 10 17:32:01 1996
| Sat Feb 10 17:32:01 1996
| Sat Feb 10 17:32:02 1996
| Sat Feb 10 17:32:01.40 1996
| Sat Feb 10 17:32:01.50 1996
| Sat Feb 10 17:32:01.60 1996
| Sat Feb 10 17:32:01.4 1996
| Sat Feb 10 17:32:01.5 1996
| Sat Feb 10 17:32:01.6 1996
| Tue Jan 02 00:00:00 1996
| Tue Jan 02 03:04:05 1996
| Sat Feb 10 17:32:01 1996
......@@ -668,9 +668,9 @@ SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
| Tue Feb 10 17:32:01 1998 PST
| Tue Feb 10 17:32:01 1998 PST
| Tue Feb 10 17:32:02 1998 PST
| Tue Feb 10 17:32:01.40 1998 PST
| Tue Feb 10 17:32:01.50 1998 PST
| Tue Feb 10 17:32:01.60 1998 PST
| Tue Feb 10 17:32:01.4 1998 PST
| Tue Feb 10 17:32:01.5 1998 PST
| Tue Feb 10 17:32:01.6 1998 PST
| Fri Jan 02 00:00:00 1998 PST
| Fri Jan 02 03:04:05 1998 PST
| Tue Feb 10 17:32:01 1998 PST
......@@ -739,9 +739,9 @@ SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
| Sat Feb 10 17:32:01 1996 PST
| Sat Feb 10 17:32:01 1996 PST
| Sat Feb 10 17:32:02 1996 PST
| Sat Feb 10 17:32:01.40 1996 PST
| Sat Feb 10 17:32:01.50 1996 PST
| Sat Feb 10 17:32:01.60 1996 PST
| Sat Feb 10 17:32:01.4 1996 PST
| Sat Feb 10 17:32:01.5 1996 PST
| Sat Feb 10 17:32:01.6 1996 PST
| Tue Jan 02 00:00:00 1996 PST
| Tue Jan 02 03:04:05 1996 PST
| Sat Feb 10 17:32:01 1996 PST
......@@ -885,7 +885,7 @@ SELECT t.d1 AS t, i.f1 AS i, t.d1 + i.f1 AS "add", t.d1 - i.f1 AS "subtract"
AND i.f1 BETWEEN '00:00' AND '23:00'
ORDER BY 1,2;
t | i | add | subtract
-----------------------------+-----------+-----------------------------+-----------------------------
----------------------------+-----------+----------------------------+----------------------------
Wed Feb 28 17:32:01 1996 | @ 1 min | Wed Feb 28 17:33:01 1996 | Wed Feb 28 17:31:01 1996
Wed Feb 28 17:32:01 1996 | @ 5 hours | Wed Feb 28 22:32:01 1996 | Wed Feb 28 12:32:01 1996
Thu Feb 29 17:32:01 1996 | @ 1 min | Thu Feb 29 17:33:01 1996 | Thu Feb 29 17:31:01 1996
......@@ -940,12 +940,12 @@ SELECT t.d1 AS t, i.f1 AS i, t.d1 + i.f1 AS "add", t.d1 - i.f1 AS "subtract"
Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
Mon Feb 10 17:32:01.40 1997 | @ 1 min | Mon Feb 10 17:33:01.40 1997 | Mon Feb 10 17:31:01.40 1997
Mon Feb 10 17:32:01.40 1997 | @ 5 hours | Mon Feb 10 22:32:01.40 1997 | Mon Feb 10 12:32:01.40 1997
Mon Feb 10 17:32:01.50 1997 | @ 1 min | Mon Feb 10 17:33:01.50 1997 | Mon Feb 10 17:31:01.50 1997
Mon Feb 10 17:32:01.50 1997 | @ 5 hours | Mon Feb 10 22:32:01.50 1997 | Mon Feb 10 12:32:01.50 1997
Mon Feb 10 17:32:01.60 1997 | @ 1 min | Mon Feb 10 17:33:01.60 1997 | Mon Feb 10 17:31:01.60 1997
Mon Feb 10 17:32:01.60 1997 | @ 5 hours | Mon Feb 10 22:32:01.60 1997 | Mon Feb 10 12:32:01.60 1997
Mon Feb 10 17:32:01.4 1997 | @ 1 min | Mon Feb 10 17:33:01.4 1997 | Mon Feb 10 17:31:01.4 1997
Mon Feb 10 17:32:01.4 1997 | @ 5 hours | Mon Feb 10 22:32:01.4 1997 | Mon Feb 10 12:32:01.4 1997
Mon Feb 10 17:32:01.5 1997 | @ 1 min | Mon Feb 10 17:33:01.5 1997 | Mon Feb 10 17:31:01.5 1997
Mon Feb 10 17:32:01.5 1997 | @ 5 hours | Mon Feb 10 22:32:01.5 1997 | Mon Feb 10 12:32:01.5 1997
Mon Feb 10 17:32:01.6 1997 | @ 1 min | Mon Feb 10 17:33:01.6 1997 | Mon Feb 10 17:31:01.6 1997
Mon Feb 10 17:32:01.6 1997 | @ 5 hours | Mon Feb 10 22:32:01.6 1997 | Mon Feb 10 12:32:01.6 1997
Mon Feb 10 17:32:02 1997 | @ 1 min | Mon Feb 10 17:33:02 1997 | Mon Feb 10 17:31:02 1997
Mon Feb 10 17:32:02 1997 | @ 5 hours | Mon Feb 10 22:32:02 1997 | Mon Feb 10 12:32:02 1997
Tue Feb 11 17:32:01 1997 | @ 1 min | Tue Feb 11 17:33:01 1997 | Tue Feb 11 17:31:01 1997
......@@ -2182,9 +2182,9 @@ SELECT '' AS "64", d1 AS us_postgres FROM TIMESTAMP_TBL;
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:02 1997
| Mon Feb 10 17:32:01.40 1997
| Mon Feb 10 17:32:01.50 1997
| Mon Feb 10 17:32:01.60 1997
| Mon Feb 10 17:32:01.4 1997
| Mon Feb 10 17:32:01.5 1997
| Mon Feb 10 17:32:01.6 1997
| Thu Jan 02 00:00:00 1997
| Thu Jan 02 03:04:05 1997
| Mon Feb 10 17:32:01 1997
......@@ -2265,9 +2265,9 @@ SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL;
| 1997-02-10 17:32:01
| 1997-02-10 17:32:01
| 1997-02-10 17:32:02
| 1997-02-10 17:32:01.40
| 1997-02-10 17:32:01.50
| 1997-02-10 17:32:01.60
| 1997-02-10 17:32:01.4
| 1997-02-10 17:32:01.5
| 1997-02-10 17:32:01.6
| 1997-01-02 00:00:00
| 1997-01-02 03:04:05
| 1997-02-10 17:32:01
......@@ -2354,9 +2354,9 @@ SELECT '' AS "64", d1 AS us_sql FROM TIMESTAMP_TBL;
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:02
| 02/10/1997 17:32:01.40
| 02/10/1997 17:32:01.50
| 02/10/1997 17:32:01.60
| 02/10/1997 17:32:01.4
| 02/10/1997 17:32:01.5
| 02/10/1997 17:32:01.6
| 01/02/1997 00:00:00
| 01/02/1997 03:04:05
| 02/10/1997 17:32:01
......@@ -2450,9 +2450,9 @@ SELECT '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL;
| Mon 10 Feb 17:32:01 1997
| Mon 10 Feb 17:32:01 1997
| Mon 10 Feb 17:32:02 1997
| Mon 10 Feb 17:32:01.40 1997
| Mon 10 Feb 17:32:01.50 1997
| Mon 10 Feb 17:32:01.60 1997
| Mon 10 Feb 17:32:01.4 1997
| Mon 10 Feb 17:32:01.5 1997
| Mon 10 Feb 17:32:01.6 1997
| Thu 02 Jan 00:00:00 1997
| Thu 02 Jan 03:04:05 1997
| Mon 10 Feb 17:32:01 1997
......@@ -2540,9 +2540,9 @@ SELECT '' AS "65", d1 AS european_iso FROM TIMESTAMP_TBL;
| 1997-02-10 17:32:01
| 1997-02-10 17:32:01
| 1997-02-10 17:32:02
| 1997-02-10 17:32:01.40
| 1997-02-10 17:32:01.50
| 1997-02-10 17:32:01.60
| 1997-02-10 17:32:01.4
| 1997-02-10 17:32:01.5
| 1997-02-10 17:32:01.6
| 1997-01-02 00:00:00
| 1997-01-02 03:04:05
| 1997-02-10 17:32:01
......@@ -2630,9 +2630,9 @@ SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL;
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:02
| 10/02/1997 17:32:01.40
| 10/02/1997 17:32:01.50
| 10/02/1997 17:32:01.60
| 10/02/1997 17:32:01.4
| 10/02/1997 17:32:01.5
| 10/02/1997 17:32:01.6
| 02/01/1997 00:00:00
| 02/01/1997 03:04:05
| 10/02/1997 17:32:01
......
......@@ -223,7 +223,7 @@ FROM INTERVAL_MULDIV_TBL;
1 year 12 days 122:24:00
-1 years -12 days +93:36:00
-3 days -14:24:00
2 mons 13 days 01:22:28.80
2 mons 13 days 01:22:28.8
-10 mons +120 days 37:28:21.6567
1 mon 6 days
4 mons 6 days
......@@ -237,7 +237,7 @@ FROM INTERVAL_MULDIV_TBL;
28 years 104 days 2961:36:00
-28 years -104 days +2942:24:00
-98 days -09:36:00
6 years 1 mon -197 days +93:34:27.20
6 years 1 mon -197 days +93:34:27.2
-24 years -7 mons +3946 days 640:15:11.9498
2 years 8 mons 24 days
9 years 6 mons 24 days
......@@ -251,7 +251,7 @@ FROM INTERVAL_MULDIV_TBL;
4 mons 4 days 40:48:00
-4 mons -4 days +31:12:00
-1 days -04:48:00
25 days -15:32:30.40
25 days -15:32:30.4
-3 mons +30 days 12:29:27.2189
12 days
1 mon 12 days
......@@ -656,8 +656,8 @@ select interval '0' AS "zero",
(interval '1-2' - interval '3 4:05:06.7') AS "mixed sign",
(- interval '1-2' + interval '3 4:05:06.7') AS "negative";
zero | a year 2 months | a bit over a day | a bit over 2 hours | all fields | mixed sign | negative
------+-----------------+------------------+--------------------+-------------------+-----------------------+---------------------
PT0S | P1Y2M | P1DT2H3M4S | PT2H3M4.45679S | P1Y2M3DT4H5M6.70S | P1Y2M-3DT-4H-5M-6.70S | P-1Y-2M3DT4H5M6.70S
------+-----------------+------------------+--------------------+------------------+----------------------+--------------------
PT0S | P1Y2M | P1DT2H3M4S | PT2H3M4.45679S | P1Y2M3DT4H5M6.7S | P1Y2M-3DT-4H-5M-6.7S | P-1Y-2M3DT4H5M6.7S
(1 row)
-- test inputting ISO 8601 4.4.2.1 "Format With Time Unit Designators"
......@@ -670,8 +670,8 @@ select interval 'P0Y' AS "zero",
interval 'P-1Y-2M-3DT-4H-5M-6.7S' AS "negative",
interval 'PT-0.1S' AS "fractional second";
zero | a year 2 months | a week | a bit over a day | all fields | negative | fractional second
------+-----------------+-----------+------------------+---------------------+---------------------+-------------------
0 | 1-2 | 7 0:00:00 | 1 2:03:04 | +1-2 +3 +4:05:06.70 | -1-2 -3 -4:05:06.70 | -0:00:00.10
------+-----------------+-----------+------------------+--------------------+--------------------+-------------------
0 | 1-2 | 7 0:00:00 | 1 2:03:04 | +1-2 +3 +4:05:06.7 | -1-2 -3 -4:05:06.7 | -0:00:00.1
(1 row)
-- test inputting ISO 8601 4.4.2.2 "Alternative Format"
......@@ -697,3 +697,23 @@ select interval 'P0002' AS "year only",
2 years | 2 years 10 mons | 2 years 10 mons 15 days | 2 years 00:00:01 | 2 years 10 mons 00:00:01 | 2 years 10 mons 15 days 00:00:01 | 10:00:00 | 10:30:00
(1 row)
-- test a couple rounding cases that changed since 8.3 w/ HAVE_INT64_TIMESTAMP.
SET IntervalStyle to postgres_verbose;
select interval '-10 mons -3 days +03:55:06.70';
interval
--------------------------------------------------
@ 10 mons 3 days -3 hours -55 mins -6.7 secs ago
(1 row)
select interval '1 year 2 mons 3 days 04:05:06.699999';
interval
-----------------------------------------------------
@ 1 year 2 mons 3 days 4 hours 5 mins 6.699999 secs
(1 row)
select interval '0:0:0.7', interval '@ 0.70 secs', interval '0.7 seconds';
interval | interval | interval
------------+------------+------------
@ 0.7 secs | @ 0.7 secs | @ 0.7 secs
(1 row)
......@@ -193,9 +193,9 @@ SELECT '' AS "64", d1 FROM TIMESTAMP_TBL;
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:02 1997
| Mon Feb 10 17:32:01.40 1997
| Mon Feb 10 17:32:01.50 1997
| Mon Feb 10 17:32:01.60 1997
| Mon Feb 10 17:32:01.4 1997
| Mon Feb 10 17:32:01.5 1997
| Mon Feb 10 17:32:01.6 1997
| Thu Jan 02 00:00:00 1997
| Thu Jan 02 03:04:05 1997
| Mon Feb 10 17:32:01 1997
......@@ -258,14 +258,14 @@ SELECT '' AS "64", d1 FROM TIMESTAMP_TBL;
SELECT '' AS "48", d1 FROM TIMESTAMP_TBL
WHERE d1 > timestamp without time zone '1997-01-02';
48 | d1
----+-----------------------------
----+----------------------------
| infinity
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:02 1997
| Mon Feb 10 17:32:01.40 1997
| Mon Feb 10 17:32:01.50 1997
| Mon Feb 10 17:32:01.60 1997
| Mon Feb 10 17:32:01.4 1997
| Mon Feb 10 17:32:01.5 1997
| Mon Feb 10 17:32:01.6 1997
| Thu Jan 02 03:04:05 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
......@@ -348,9 +348,9 @@ SELECT '' AS "63", d1 FROM TIMESTAMP_TBL
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:02 1997
| Mon Feb 10 17:32:01.40 1997
| Mon Feb 10 17:32:01.50 1997
| Mon Feb 10 17:32:01.60 1997
| Mon Feb 10 17:32:01.4 1997
| Mon Feb 10 17:32:01.5 1997
| Mon Feb 10 17:32:01.6 1997
| Thu Jan 02 03:04:05 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
......@@ -433,14 +433,14 @@ SELECT '' AS "16", d1 FROM TIMESTAMP_TBL
SELECT '' AS "49", d1 FROM TIMESTAMP_TBL
WHERE d1 >= timestamp without time zone '1997-01-02';
49 | d1
----+-----------------------------
----+----------------------------
| infinity
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:02 1997
| Mon Feb 10 17:32:01.40 1997
| Mon Feb 10 17:32:01.50 1997
| Mon Feb 10 17:32:01.60 1997
| Mon Feb 10 17:32:01.4 1997
| Mon Feb 10 17:32:01.5 1997
| Mon Feb 10 17:32:01.6 1997
| Thu Jan 02 00:00:00 1997
| Thu Jan 02 03:04:05 1997
| Mon Feb 10 17:32:01 1997
......@@ -494,9 +494,9 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 2 secs
| @ 39 days 17 hours 32 mins 1.40 secs
| @ 39 days 17 hours 32 mins 1.50 secs
| @ 39 days 17 hours 32 mins 1.60 secs
| @ 39 days 17 hours 32 mins 1.4 secs
| @ 39 days 17 hours 32 mins 1.5 secs
| @ 39 days 17 hours 32 mins 1.6 secs
| @ 0
| @ 3 hours 4 mins 5 secs
| @ 39 days 17 hours 32 mins 1 sec
......@@ -564,9 +564,9 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 2 secs
| @ 39 days 17 hours 32 mins 1.40 secs
| @ 39 days 17 hours 32 mins 1.50 secs
| @ 39 days 17 hours 32 mins 1.60 secs
| @ 39 days 17 hours 32 mins 1.4 secs
| @ 39 days 17 hours 32 mins 1.5 secs
| @ 39 days 17 hours 32 mins 1.6 secs
| @ 0
| @ 3 hours 4 mins 5 secs
| @ 39 days 17 hours 32 mins 1 sec
......@@ -623,14 +623,14 @@ SELECT '' AS "54", d1 as "timestamp",
date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamp | year | month | day | hour | minute | second
----+-----------------------------+------+-------+-----+------+--------+--------
----+----------------------------+------+-------+-----+------+--------+--------
| Thu Jan 01 00:00:00 1970 | 1970 | 1 | 1 | 0 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 17:32:02 1997 | 1997 | 2 | 10 | 17 | 32 | 2
| Mon Feb 10 17:32:01.40 1997 | 1997 | 2 | 10 | 17 | 32 | 1.4
| Mon Feb 10 17:32:01.50 1997 | 1997 | 2 | 10 | 17 | 32 | 1.5
| Mon Feb 10 17:32:01.60 1997 | 1997 | 2 | 10 | 17 | 32 | 1.6
| Mon Feb 10 17:32:01.4 1997 | 1997 | 2 | 10 | 17 | 32 | 1.4
| Mon Feb 10 17:32:01.5 1997 | 1997 | 2 | 10 | 17 | 32 | 1.5
| Mon Feb 10 17:32:01.6 1997 | 1997 | 2 | 10 | 17 | 32 | 1.6
| Thu Jan 02 00:00:00 1997 | 1997 | 1 | 2 | 0 | 0 | 0
| Thu Jan 02 03:04:05 1997 | 1997 | 1 | 2 | 3 | 4 | 5
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
......@@ -686,14 +686,14 @@ SELECT '' AS "54", d1 as "timestamp",
date_part( 'usec', d1) AS usec
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamp | quarter | msec | usec
----+-----------------------------+---------+-------+----------
----+----------------------------+---------+-------+----------
| Thu Jan 01 00:00:00 1970 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
| Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
| Mon Feb 10 17:32:02 1997 | 1 | 2000 | 2000000
| Mon Feb 10 17:32:01.40 1997 | 1 | 1400 | 1400000
| Mon Feb 10 17:32:01.50 1997 | 1 | 1500 | 1500000
| Mon Feb 10 17:32:01.60 1997 | 1 | 1600 | 1600000
| Mon Feb 10 17:32:01.4 1997 | 1 | 1400 | 1400000
| Mon Feb 10 17:32:01.5 1997 | 1 | 1500 | 1500000
| Mon Feb 10 17:32:01.6 1997 | 1 | 1600 | 1600000
| Thu Jan 02 00:00:00 1997 | 1 | 0 | 0
| Thu Jan 02 03:04:05 1997 | 1 | 5000 | 5000000
| Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
......@@ -749,14 +749,14 @@ SELECT '' AS "54", d1 as "timestamp",
date_part( 'dow', d1) AS dow
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamp | isoyear | week | dow
----+-----------------------------+---------+------+-----
----+----------------------------+---------+------+-----
| Thu Jan 01 00:00:00 1970 | 1970 | 1 | 4
| Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:02 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.40 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.50 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.60 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.4 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.5 1997 | 1997 | 7 | 1
| Mon Feb 10 17:32:01.6 1997 | 1997 | 7 | 1
| Thu Jan 02 00:00:00 1997 | 1997 | 1 | 4
| Thu Jan 02 03:04:05 1997 | 1997 | 1 | 4
| Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
......
......@@ -264,9 +264,9 @@ SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL;
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:02 1997 PST
| Mon Feb 10 17:32:01.40 1997 PST
| Mon Feb 10 17:32:01.50 1997 PST
| Mon Feb 10 17:32:01.60 1997 PST
| Mon Feb 10 17:32:01.4 1997 PST
| Mon Feb 10 17:32:01.5 1997 PST
| Mon Feb 10 17:32:01.6 1997 PST
| Thu Jan 02 00:00:00 1997 PST
| Thu Jan 02 03:04:05 1997 PST
| Mon Feb 10 17:32:01 1997 PST
......@@ -330,14 +330,14 @@ SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL;
SELECT '' AS "48", d1 FROM TIMESTAMPTZ_TBL
WHERE d1 > timestamp with time zone '1997-01-02';
48 | d1
----+---------------------------------
----+--------------------------------
| infinity
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:02 1997 PST
| Mon Feb 10 17:32:01.40 1997 PST
| Mon Feb 10 17:32:01.50 1997 PST
| Mon Feb 10 17:32:01.60 1997 PST
| Mon Feb 10 17:32:01.4 1997 PST
| Mon Feb 10 17:32:01.5 1997 PST
| Mon Feb 10 17:32:01.6 1997 PST
| Thu Jan 02 03:04:05 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
......@@ -421,9 +421,9 @@ SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:02 1997 PST
| Mon Feb 10 17:32:01.40 1997 PST
| Mon Feb 10 17:32:01.50 1997 PST
| Mon Feb 10 17:32:01.60 1997 PST
| Mon Feb 10 17:32:01.4 1997 PST
| Mon Feb 10 17:32:01.5 1997 PST
| Mon Feb 10 17:32:01.6 1997 PST
| Thu Jan 02 03:04:05 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
......@@ -507,14 +507,14 @@ SELECT '' AS "16", d1 FROM TIMESTAMPTZ_TBL
SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL
WHERE d1 >= timestamp with time zone '1997-01-02';
49 | d1
----+---------------------------------
----+--------------------------------
| infinity
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:02 1997 PST
| Mon Feb 10 17:32:01.40 1997 PST
| Mon Feb 10 17:32:01.50 1997 PST
| Mon Feb 10 17:32:01.60 1997 PST
| Mon Feb 10 17:32:01.4 1997 PST
| Mon Feb 10 17:32:01.5 1997 PST
| Mon Feb 10 17:32:01.6 1997 PST
| Thu Jan 02 00:00:00 1997 PST
| Thu Jan 02 03:04:05 1997 PST
| Mon Feb 10 17:32:01 1997 PST
......@@ -569,9 +569,9 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 2 secs
| @ 39 days 17 hours 32 mins 1.40 secs
| @ 39 days 17 hours 32 mins 1.50 secs
| @ 39 days 17 hours 32 mins 1.60 secs
| @ 39 days 17 hours 32 mins 1.4 secs
| @ 39 days 17 hours 32 mins 1.5 secs
| @ 39 days 17 hours 32 mins 1.6 secs
| @ 0
| @ 3 hours 4 mins 5 secs
| @ 39 days 17 hours 32 mins 1 sec
......@@ -639,9 +639,9 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 2 secs
| @ 39 days 17 hours 32 mins 1.40 secs
| @ 39 days 17 hours 32 mins 1.50 secs
| @ 39 days 17 hours 32 mins 1.60 secs
| @ 39 days 17 hours 32 mins 1.4 secs
| @ 39 days 17 hours 32 mins 1.5 secs
| @ 39 days 17 hours 32 mins 1.6 secs
| @ 0
| @ 3 hours 4 mins 5 secs
| @ 39 days 17 hours 32 mins 1 sec
......@@ -699,14 +699,14 @@ SELECT '' AS "54", d1 as timestamptz,
date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamptz | year | month | day | hour | minute | second
----+---------------------------------+------+-------+-----+------+--------+--------
----+--------------------------------+------+-------+-----+------+--------+--------
| Wed Dec 31 16:00:00 1969 PST | 1969 | 12 | 31 | 16 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 17:32:02 1997 PST | 1997 | 2 | 10 | 17 | 32 | 2
| Mon Feb 10 17:32:01.40 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.4
| Mon Feb 10 17:32:01.50 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.5
| Mon Feb 10 17:32:01.60 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.6
| Mon Feb 10 17:32:01.4 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.4
| Mon Feb 10 17:32:01.5 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.5
| Mon Feb 10 17:32:01.6 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.6
| Thu Jan 02 00:00:00 1997 PST | 1997 | 1 | 2 | 0 | 0 | 0
| Thu Jan 02 03:04:05 1997 PST | 1997 | 1 | 2 | 3 | 4 | 5
| Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
......@@ -763,14 +763,14 @@ SELECT '' AS "54", d1 as timestamptz,
date_part( 'usec', d1) AS usec
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamptz | quarter | msec | usec
----+---------------------------------+---------+-------+----------
----+--------------------------------+---------+-------+----------
| Wed Dec 31 16:00:00 1969 PST | 4 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
| Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
| Mon Feb 10 17:32:02 1997 PST | 1 | 2000 | 2000000
| Mon Feb 10 17:32:01.40 1997 PST | 1 | 1400 | 1400000
| Mon Feb 10 17:32:01.50 1997 PST | 1 | 1500 | 1500000
| Mon Feb 10 17:32:01.60 1997 PST | 1 | 1600 | 1600000
| Mon Feb 10 17:32:01.4 1997 PST | 1 | 1400 | 1400000
| Mon Feb 10 17:32:01.5 1997 PST | 1 | 1500 | 1500000
| Mon Feb 10 17:32:01.6 1997 PST | 1 | 1600 | 1600000
| Thu Jan 02 00:00:00 1997 PST | 1 | 0 | 0
| Thu Jan 02 03:04:05 1997 PST | 1 | 5000 | 5000000
| Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
......@@ -827,14 +827,14 @@ SELECT '' AS "54", d1 as timestamptz,
date_part( 'dow', d1) AS dow
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | timestamptz | isoyear | week | dow
----+---------------------------------+---------+------+-----
----+--------------------------------+---------+------+-----
| Wed Dec 31 16:00:00 1969 PST | 1970 | 1 | 3
| Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:02 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.40 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.50 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.60 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.4 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.5 1997 PST | 1997 | 7 | 1
| Mon Feb 10 17:32:01.6 1997 PST | 1997 | 7 | 1
| Thu Jan 02 00:00:00 1997 PST | 1997 | 1 | 4
| Thu Jan 02 03:04:05 1997 PST | 1997 | 1 | 4
| Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
......
......@@ -235,3 +235,9 @@ select interval 'P0002' AS "year only",
interval 'P0002-10-15T1S' AS "year month day plus time",
interval 'PT10' AS "hour only",
interval 'PT10:30' AS "hour minute";
-- test a couple rounding cases that changed since 8.3 w/ HAVE_INT64_TIMESTAMP.
SET IntervalStyle to postgres_verbose;
select interval '-10 mons -3 days +03:55:06.70';
select interval '1 year 2 mons 3 days 04:05:06.699999';
select interval '0:0:0.7', interval '@ 0.70 secs', interval '0.7 seconds';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment