1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Implement precision support for timestamp and time, both with and without

time zones.
SQL99 spec requires a default of zero (round to seconds) which is set
 in gram.y as typmod is set in the parse tree. We *could* change to a
 default of either 6 (for internal compatibility with previous versions)
 or 2 (for external compatibility with previous versions).
Evaluate entries in pg_proc wrt the iscachable attribute for timestamp and
 other date/time types. Try to recognize cases where side effects like the
 current time zone setting may have an effect on results to decide whether
 something is cachable or not.
This commit is contained in:
Thomas G. Lockhart
2001-10-03 05:29:27 +00:00
parent a51de40fb6
commit 3e1beda2cd
22 changed files with 946 additions and 942 deletions

View File

@ -101,21 +101,24 @@ SELECT (timestamp without time zone 'tomorrow' > 'now') as "True";
t
(1 row)
SELECT timestamp(date '1994-01-01', time '11:00') AS "Jan_01_1994_11am";
-- Convert from date and time to timestamp
-- This test used to be timestamp(date,time) but no longer allowed by grammar
-- to enable support for SQL99 timestamp type syntax.
SELECT date '1994-01-01' + time '11:00' AS "Jan_01_1994_11am";
Jan_01_1994_11am
--------------------------
Sat Jan 01 11:00:00 1994
(1 row)
SELECT timestamp(date '1994-01-01', time '10:00') AS "Jan_01_1994_10am";
SELECT date '1994-01-01' + time '10:00' AS "Jan_01_1994_10am";
Jan_01_1994_10am
--------------------------
Sat Jan 01 10:00:00 1994
(1 row)
SELECT timestamp(date '1994-01-01', time '11:00-5') AS "Jan_01_1994_8am";
SELECT date '1994-01-01' + time '11:00-5' AS "Jan_01_1994_8am";
ERROR: Bad time external representation '11:00-5'
SELECT timestamp(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_11am";
SELECT "timestamp"(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_11am";
Jan_01_1994_11am
--------------------------
Sat Jan 01 11:00:00 1994
@ -128,8 +131,8 @@ SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
| infinity
| Fri Jan 01 00:00:00 1971
| Tue Feb 10 17:32:01 1998
| Tue Feb 10 17:32:01.00 1998
| Tue Feb 10 17:32:02.00 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
@ -197,8 +200,8 @@ SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
| infinity
| Wed Jan 01 00:00:00 1969
| Sat Feb 10 17:32:01 1996
| Sat Feb 10 17:32:01.00 1996
| Sat Feb 10 17:32:02.00 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
@ -344,8 +347,8 @@ SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
| infinity
| Thu Dec 31 16:00:00 1970 PST
| Tue Feb 10 17:32:01 1998 PST
| Tue Feb 10 17:32:01.00 1998 PST
| Tue Feb 10 17:32:02.00 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
@ -413,8 +416,8 @@ SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
| infinity
| Tue Dec 31 16:00:00 1968 PST
| Sat Feb 10 17:32:01 1996 PST
| Sat Feb 10 17:32:01.00 1996 PST
| Sat Feb 10 17:32:02.00 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
@ -568,10 +571,10 @@ SELECT t.d1 + i.f1 AS "102" FROM TIMESTAMP_TBL t, INTERVAL_TBL i
-----------------------------
Mon Feb 10 17:33:01 1997
Mon Feb 10 22:32:01 1997
Mon Feb 10 17:33:01.00 1997
Mon Feb 10 22:32:01.00 1997
Mon Feb 10 17:33:02.00 1997
Mon Feb 10 22:32:02.00 1997
Mon Feb 10 17:33:01 1997
Mon Feb 10 22:32:01 1997
Mon Feb 10 17:33:02 1997
Mon Feb 10 22:32:02 1997
Mon Feb 10 17:33:01.40 1997
Mon Feb 10 22:32:01.40 1997
Mon Feb 10 17:33:01.50 1997
@ -677,10 +680,10 @@ SELECT t.d1 - i.f1 AS "102" FROM TIMESTAMP_TBL t, INTERVAL_TBL i
-----------------------------
Mon Feb 10 17:31:01 1997
Mon Feb 10 12:32:01 1997
Mon Feb 10 17:31:01.00 1997
Mon Feb 10 12:32:01.00 1997
Mon Feb 10 17:31:02.00 1997
Mon Feb 10 12:32:02.00 1997
Mon Feb 10 17:31:01 1997
Mon Feb 10 12:32:01 1997
Mon Feb 10 17:31:02 1997
Mon Feb 10 12:32:02 1997
Mon Feb 10 17:31:01.40 1997
Mon Feb 10 12:32:01.40 1997
Mon Feb 10 17:31:01.50 1997
@ -780,8 +783,8 @@ SELECT t.d1 - i.f1 AS "102" FROM TIMESTAMP_TBL t, INTERVAL_TBL i
(102 rows)
SELECT t.f1 + i.f1 AS "80" FROM TIME_TBL t, INTERVAL_TBL i;
80
----------
80
-------------
00:01:00
05:00:00
00:00:00
@ -852,21 +855,21 @@ SELECT t.f1 + i.f1 AS "80" FROM TIME_TBL t, INTERVAL_TBL i;
23:59:00
23:59:00
11:59:00
00:00:59
04:59:59
23:59:59
23:59:59
23:59:59
23:59:45
02:03:03
23:59:59
23:59:59
11:59:59
00:00:59.99
04:59:59.99
23:59:59.99
23:59:59.99
23:59:59.99
23:59:45.99
02:03:03.99
23:59:59.99
23:59:59.99
11:59:59.99
(80 rows)
SELECT t.f1 - i.f1 AS "80" FROM TIME_TBL t, INTERVAL_TBL i;
80
----------
80
-------------
23:59:00
19:00:00
00:00:00
@ -937,21 +940,21 @@ SELECT t.f1 - i.f1 AS "80" FROM TIME_TBL t, INTERVAL_TBL i;
23:59:00
23:59:00
11:59:00
23:58:59
18:59:59
23:59:59
23:59:59
23:59:59
00:00:13
21:56:55
23:59:59
23:59:59
11:59:59
23:58:59.99
18:59:59.99
23:59:59.99
23:59:59.99
23:59:59.99
00:00:13.99
21:56:55.99
23:59:59.99
23:59:59.99
11:59:59.99
(80 rows)
SELECT t.f1 + i.f1 AS "100" FROM TIMETZ_TBL t, INTERVAL_TBL i;
100
-------------
100
----------------
00:02:00-07
05:01:00-07
00:01:00-07
@ -1042,21 +1045,21 @@ SELECT t.f1 + i.f1 AS "100" FROM TIMETZ_TBL t, INTERVAL_TBL i;
23:59:00-07
23:59:00-07
11:59:00-07
00:00:59-07
04:59:59-07
23:59:59-07
23:59:59-07
23:59:59-07
23:59:45-07
02:03:03-07
23:59:59-07
23:59:59-07
11:59:59-07
00:00:59.99-07
04:59:59.99-07
23:59:59.99-07
23:59:59.99-07
23:59:59.99-07
23:59:45.99-07
02:03:03.99-07
23:59:59.99-07
23:59:59.99-07
11:59:59.99-07
(100 rows)
SELECT t.f1 - i.f1 AS "100" FROM TIMETZ_TBL t, INTERVAL_TBL i;
100
-------------
100
----------------
00:00:00-07
19:01:00-07
00:01:00-07
@ -1147,16 +1150,16 @@ SELECT t.f1 - i.f1 AS "100" FROM TIMETZ_TBL t, INTERVAL_TBL i;
23:59:00-07
23:59:00-07
11:59:00-07
23:58:59-07
18:59:59-07
23:59:59-07
23:59:59-07
23:59:59-07
00:00:13-07
21:56:55-07
23:59:59-07
23:59:59-07
11:59:59-07
23:58:59.99-07
18:59:59.99-07
23:59:59.99-07
23:59:59.99-07
23:59:59.99-07
00:00:13.99-07
21:56:55.99-07
23:59:59.99-07
23:59:59.99-07
11:59:59.99-07
(100 rows)
-- SQL9x OVERLAPS operator
@ -1284,9 +1287,9 @@ INSERT INTO TEMP_TIMESTAMP (f1)
SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010';
SELECT '' AS "16", f1 AS timestamp
SELECT '' AS "16", f1 AS "timestamp"
FROM TEMP_TIMESTAMP
ORDER BY timestamp;
ORDER BY "timestamp";
16 | timestamp
----+------------------------------
| Thu Jan 01 00:00:00 1970 PST
@ -1307,9 +1310,9 @@ SELECT '' AS "16", f1 AS timestamp
| Sat Sep 22 18:19:20 2001 PDT
(16 rows)
SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 + t.f1 AS plus
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS interval, d.f1 + t.f1 AS plus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
ORDER BY plus, timestamp, interval;
ORDER BY plus, "timestamp", interval;
160 | timestamp | interval | plus
-----+------------------------------+-------------------------------+------------------------------
| Thu Jan 01 00:00:00 1970 PST | @ 14 secs ago | Wed Dec 31 23:59:46 1969 PST
@ -1474,10 +1477,10 @@ SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 + t.f1 AS plus
| Sat Sep 22 18:19:20 2001 PDT | @ 34 years | Sat Sep 22 18:19:20 2035 PDT
(160 rows)
SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 - t.f1 AS minus
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS interval, d.f1 - t.f1 AS minus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
WHERE isfinite(d.f1)
ORDER BY minus, timestamp, interval;
ORDER BY minus, "timestamp", interval;
160 | timestamp | interval | minus
-----+------------------------------+-------------------------------+------------------------------
| Thu Jan 01 00:00:00 1970 PST | @ 34 years | Wed Jan 01 00:00:00 1936 PST
@ -1642,7 +1645,7 @@ SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 - t.f1 AS minus
| Sat Sep 22 18:19:20 2001 PDT | @ 14 secs ago | Sat Sep 22 18:19:34 2001 PDT
(160 rows)
SELECT '' AS "16", d.f1 AS timestamp, timestamp '1980-01-06 00:00 GMT' AS gpstime_zero,
SELECT '' AS "16", d.f1 AS "timestamp", timestamp '1980-01-06 00:00 GMT' AS gpstime_zero,
d.f1 - timestamp '1980-01-06 00:00 GMT' AS difference
FROM TEMP_TIMESTAMP d
ORDER BY difference;
@ -1929,72 +1932,6 @@ SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS d
| Sat Sep 22 18:19:20 2001 PDT | Sat Sep 22 18:19:20 2001 PDT | @ 0
(256 rows)
SELECT '' as "55", d1 as timestamp,
date_part('year', d1) AS year, date_part('month', d1) AS month,
date_part('day',d1) AS day, date_part('hour', d1) AS hour,
date_part('minute', d1) AS minute, date_part('second', d1) AS second
FROM TIMESTAMP_TBL
WHERE isfinite(d1) and d1 >= '1-jan-1900 GMT'
ORDER BY timestamp;
55 | timestamp | year | month | day | hour | minute | second
----+-----------------------------+------+-------+-----+------+--------+----------
| Thu Jan 01 00:00:00 1970 | 1969 | 12 | 31 | 16 | 0 | 0
| Wed Feb 28 17:32:01 1996 | 1996 | 2 | 28 | 9 | 32 | 1
| Thu Feb 29 17:32:01 1996 | 1996 | 2 | 29 | 9 | 32 | 1
| Fri Mar 01 17:32:01 1996 | 1996 | 3 | 1 | 9 | 32 | 1
| Mon Dec 30 17:32:01 1996 | 1996 | 12 | 30 | 9 | 32 | 1
| Tue Dec 31 17:32:01 1996 | 1996 | 12 | 31 | 9 | 32 | 1
| Wed Jan 01 17:32:01 1997 | 1997 | 1 | 1 | 9 | 32 | 1
| Thu Jan 02 00:00:00 1997 | 1997 | 1 | 1 | 16 | 0 | 0
| Thu Jan 02 03:04:05 1997 | 1997 | 1 | 1 | 19 | 4 | 5
| Mon Feb 10 17:32:00 1997 | 1997 | 2 | 10 | 9 | 32 | 0
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 17:32:01.00 1997 | 1997 | 2 | 10 | 9 | 32 | 1.000001
| Mon Feb 10 17:32:01.40 1997 | 1997 | 2 | 10 | 9 | 32 | 1.4
| Mon Feb 10 17:32:01.50 1997 | 1997 | 2 | 10 | 9 | 32 | 1.5
| Mon Feb 10 17:32:01.60 1997 | 1997 | 2 | 10 | 9 | 32 | 1.6
| Mon Feb 10 17:32:02.00 1997 | 1997 | 2 | 10 | 9 | 32 | 1.999999
| Tue Feb 11 17:32:01 1997 | 1997 | 2 | 11 | 9 | 32 | 1
| Wed Feb 12 17:32:01 1997 | 1997 | 2 | 12 | 9 | 32 | 1
| Thu Feb 13 17:32:01 1997 | 1997 | 2 | 13 | 9 | 32 | 1
| Fri Feb 14 17:32:01 1997 | 1997 | 2 | 14 | 9 | 32 | 1
| Sat Feb 15 17:32:01 1997 | 1997 | 2 | 15 | 9 | 32 | 1
| Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 9 | 32 | 1
| Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 9 | 32 | 1
| Fri Feb 28 17:32:01 1997 | 1997 | 2 | 28 | 9 | 32 | 1
| Sat Mar 01 17:32:01 1997 | 1997 | 3 | 1 | 9 | 32 | 1
| Tue Jun 10 17:32:01 1997 | 1997 | 6 | 10 | 10 | 32 | 1
| Tue Jun 10 18:32:01 1997 | 1997 | 6 | 10 | 11 | 32 | 1
| Tue Dec 30 17:32:01 1997 | 1997 | 12 | 30 | 9 | 32 | 1
| Wed Dec 31 17:32:01 1997 | 1997 | 12 | 31 | 9 | 32 | 1
| Fri Dec 31 17:32:01 1999 | 1999 | 12 | 31 | 9 | 32 | 1
| Sat Jan 01 17:32:01 2000 | 2000 | 1 | 1 | 9 | 32 | 1
| Wed Mar 15 02:14:05 2000 | 2000 | 3 | 14 | 18 | 14 | 5
| Wed Mar 15 03:14:04 2000 | 2000 | 3 | 14 | 19 | 14 | 4
| Wed Mar 15 08:14:01 2000 | 2000 | 3 | 15 | 0 | 14 | 1
| Wed Mar 15 12:14:03 2000 | 2000 | 3 | 15 | 4 | 14 | 3
| Wed Mar 15 13:14:02 2000 | 2000 | 3 | 15 | 5 | 14 | 2
| Sun Dec 31 17:32:01 2000 | 2000 | 12 | 31 | 9 | 32 | 1
| Mon Jan 01 17:32:01 2001 | 2001 | 1 | 1 | 9 | 32 | 1
| Sat Sep 22 18:19:20 2001 | 2001 | 9 | 22 | 11 | 19 | 20
| Sat Feb 16 17:32:01 2097 | 2097 | 2 | 16 | 17 | 32 | 1
(55 rows)
--
-- abstime, reltime arithmetic
--
@ -2061,10 +1998,10 @@ SELECT '' AS three, ABSTIME_TBL.*
--
-- Conversions
--
SELECT '' AS "16", f1 AS timestamp, date(f1) AS date
SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date
FROM TEMP_TIMESTAMP
WHERE f1 <> timestamp 'current'
ORDER BY date, timestamp;
ORDER BY date, "timestamp";
16 | timestamp | date
----+------------------------------+------------
| Thu Jan 01 00:00:00 1970 PST | 01-01-1970
@ -2085,7 +2022,7 @@ SELECT '' AS "16", f1 AS timestamp, date(f1) AS date
| Sat Sep 22 18:19:20 2001 PDT | 09-22-2001
(16 rows)
SELECT '' AS "16", f1 AS timestamp, abstime(f1) AS abstime
SELECT '' AS "16", f1 AS "timestamp", abstime(f1) AS abstime
FROM TEMP_TIMESTAMP
ORDER BY abstime;
16 | timestamp | abstime
@ -2120,7 +2057,7 @@ SELECT '' AS four, f1 AS abstime, date(f1) AS date
| Mon May 01 00:30:30 1995 PDT | 05-01-1995
(4 rows)
SELECT '' AS two, d1 AS timestamp, abstime(d1) AS abstime
SELECT '' AS two, d1 AS "timestamp", abstime(d1) AS abstime
FROM TIMESTAMP_TBL WHERE NOT isfinite(d1);
two | timestamp | abstime
-----+-----------+-----------
@ -2128,9 +2065,9 @@ SELECT '' AS two, d1 AS timestamp, abstime(d1) AS abstime
| infinity | infinity
(2 rows)
SELECT '' AS three, f1 as abstime, timestamp(f1) AS timestamp
SELECT '' AS three, f1 as abstime, cast(f1 as timestamp) AS "timestamp"
FROM ABSTIME_TBL WHERE NOT isfinite(f1);
ERROR: Unable to convert abstime 'invalid' to timestamp
ERROR: Unable to convert abstime 'invalid' to timestamptz
SELECT '' AS ten, f1 AS interval, reltime(f1) AS reltime
FROM INTERVAL_TBL;
ten | interval | reltime
@ -2173,8 +2110,8 @@ SELECT '' AS "64", d1 AS us_postgres FROM TIMESTAMP_TBL;
| infinity
| Thu Jan 01 00:00:00 1970
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01.00 1997
| Mon Feb 10 17:32:02.00 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
@ -2255,8 +2192,8 @@ SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL;
| infinity
| 1970-01-01 00:00:00
| 1997-02-10 17:32:01
| 1997-02-10 17:32:01.00
| 1997-02-10 17:32:02.00
| 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
@ -2337,79 +2274,79 @@ SELECT '' AS "64", d1 AS us_sql FROM TIMESTAMP_TBL;
----+------------------------
| -infinity
| infinity
| 01/01/1970 00:00:00.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:02.00
| 01/01/1970 00:00:00
| 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
| 01/02/1997 00:00:00.00
| 01/02/1997 03:04:05.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 06/10/1997 17:32:01.00
| 09/22/2001 18:19:20.00
| 03/15/2000 08:14:01.00
| 03/15/2000 13:14:02.00
| 03/15/2000 12:14:03.00
| 03/15/2000 03:14:04.00
| 03/15/2000 02:14:05.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:00.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 02/10/1997 17:32:01.00
| 06/10/1997 18:32:01.00
| 02/10/1997 17:32:01.00
| 02/11/1997 17:32:01.00
| 02/12/1997 17:32:01.00
| 02/13/1997 17:32:01.00
| 02/14/1997 17:32:01.00
| 02/15/1997 17:32:01.00
| 02/16/1997 17:32:01.00
| 01/02/1997 00:00:00
| 01/02/1997 03:04:05
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 06/10/1997 17:32:01
| 09/22/2001 18:19:20
| 03/15/2000 08:14:01
| 03/15/2000 13:14:02
| 03/15/2000 12:14:03
| 03/15/2000 03:14:04
| 03/15/2000 02:14:05
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:00
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 02/10/1997 17:32:01
| 06/10/1997 18:32:01
| 02/10/1997 17:32:01
| 02/11/1997 17:32:01
| 02/12/1997 17:32:01
| 02/13/1997 17:32:01
| 02/14/1997 17:32:01
| 02/15/1997 17:32:01
| 02/16/1997 17:32:01
| 02/16/0097 17:32 BC
| 02/16/0097 17:32:01.00
| 02/16/0597 17:32:01.00
| 02/16/1097 17:32:01.00
| 02/16/1697 17:32:01.00
| 02/16/1797 17:32:01.00
| 02/16/1897 17:32:01.00
| 02/16/1997 17:32:01.00
| 02/16/2097 17:32:01.00
| 02/28/1996 17:32:01.00
| 02/29/1996 17:32:01.00
| 03/01/1996 17:32:01.00
| 12/30/1996 17:32:01.00
| 12/31/1996 17:32:01.00
| 01/01/1997 17:32:01.00
| 02/28/1997 17:32:01.00
| 03/01/1997 17:32:01.00
| 12/30/1997 17:32:01.00
| 12/31/1997 17:32:01.00
| 12/31/1999 17:32:01.00
| 01/01/2000 17:32:01.00
| 12/31/2000 17:32:01.00
| 01/01/2001 17:32:01.00
| 02/16/0097 17:32:01
| 02/16/0597 17:32:01
| 02/16/1097 17:32:01
| 02/16/1697 17:32:01
| 02/16/1797 17:32:01
| 02/16/1897 17:32:01
| 02/16/1997 17:32:01
| 02/16/2097 17:32:01
| 02/28/1996 17:32:01
| 02/29/1996 17:32:01
| 03/01/1996 17:32:01
| 12/30/1996 17:32:01
| 12/31/1996 17:32:01
| 01/01/1997 17:32:01
| 02/28/1997 17:32:01
| 03/01/1997 17:32:01
| 12/30/1997 17:32:01
| 12/31/1997 17:32:01
| 12/31/1999 17:32:01
| 01/01/2000 17:32:01
| 12/31/2000 17:32:01
| 01/01/2001 17:32:01
(64 rows)
SELECT '' AS seven, f1 AS us_sql FROM ABSTIME_TBL;
seven | us_sql
-------+----------------------------
| 01/14/1973 03:14:21.00 PST
| 05/01/1995 00:30:30.00 PDT
| 12/31/1969 16:00:00.00 PST
seven | us_sql
-------+-------------------------
| 01/14/1973 03:14:21 PST
| 05/01/1995 00:30:30 PDT
| 12/31/1969 16:00:00 PST
| infinity
| -infinity
| 05/10/1947 23:59:12.00 PST
| 05/10/1947 23:59:12 PST
| invalid
(7 rows)
@ -2430,8 +2367,8 @@ SELECT '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL;
| infinity
| Thu 01 Jan 00:00:00 1970
| Mon 10 Feb 17:32:01 1997
| Mon 10 Feb 17:32:01.00 1997
| Mon 10 Feb 17:32:02.00 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
@ -2515,8 +2452,8 @@ SELECT '' AS "65", d1 AS european_iso FROM TIMESTAMP_TBL;
| infinity
| 1970-01-01 00:00:00
| 1997-02-10 17:32:01
| 1997-02-10 17:32:01.00
| 1997-02-10 17:32:02.00
| 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
@ -2598,80 +2535,80 @@ SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL;
----+------------------------
| -infinity
| infinity
| 01/01/1970 00:00:00.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:02.00
| 01/01/1970 00:00:00
| 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
| 02/01/1997 00:00:00.00
| 02/01/1997 03:04:05.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/06/1997 17:32:01.00
| 22/09/2001 18:19:20.00
| 15/03/2000 08:14:01.00
| 15/03/2000 13:14:02.00
| 15/03/2000 12:14:03.00
| 15/03/2000 03:14:04.00
| 15/03/2000 02:14:05.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:00.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/02/1997 17:32:01.00
| 10/06/1997 18:32:01.00
| 10/02/1997 17:32:01.00
| 11/02/1997 17:32:01.00
| 12/02/1997 17:32:01.00
| 13/02/1997 17:32:01.00
| 14/02/1997 17:32:01.00
| 15/02/1997 17:32:01.00
| 16/02/1997 17:32:01.00
| 02/01/1997 00:00:00
| 02/01/1997 03:04:05
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/06/1997 17:32:01
| 22/09/2001 18:19:20
| 15/03/2000 08:14:01
| 15/03/2000 13:14:02
| 15/03/2000 12:14:03
| 15/03/2000 03:14:04
| 15/03/2000 02:14:05
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:00
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/02/1997 17:32:01
| 10/06/1997 18:32:01
| 10/02/1997 17:32:01
| 11/02/1997 17:32:01
| 12/02/1997 17:32:01
| 13/02/1997 17:32:01
| 14/02/1997 17:32:01
| 15/02/1997 17:32:01
| 16/02/1997 17:32:01
| 16/02/0097 17:32 BC
| 16/02/0097 17:32:01.00
| 16/02/0597 17:32:01.00
| 16/02/1097 17:32:01.00
| 16/02/1697 17:32:01.00
| 16/02/1797 17:32:01.00
| 16/02/1897 17:32:01.00
| 16/02/1997 17:32:01.00
| 16/02/2097 17:32:01.00
| 28/02/1996 17:32:01.00
| 29/02/1996 17:32:01.00
| 01/03/1996 17:32:01.00
| 30/12/1996 17:32:01.00
| 31/12/1996 17:32:01.00
| 01/01/1997 17:32:01.00
| 28/02/1997 17:32:01.00
| 01/03/1997 17:32:01.00
| 30/12/1997 17:32:01.00
| 31/12/1997 17:32:01.00
| 31/12/1999 17:32:01.00
| 01/01/2000 17:32:01.00
| 31/12/2000 17:32:01.00
| 01/01/2001 17:32:01.00
| 13/06/1957 00:00:00.00
| 16/02/0097 17:32:01
| 16/02/0597 17:32:01
| 16/02/1097 17:32:01
| 16/02/1697 17:32:01
| 16/02/1797 17:32:01
| 16/02/1897 17:32:01
| 16/02/1997 17:32:01
| 16/02/2097 17:32:01
| 28/02/1996 17:32:01
| 29/02/1996 17:32:01
| 01/03/1996 17:32:01
| 30/12/1996 17:32:01
| 31/12/1996 17:32:01
| 01/01/1997 17:32:01
| 28/02/1997 17:32:01
| 01/03/1997 17:32:01
| 30/12/1997 17:32:01
| 31/12/1997 17:32:01
| 31/12/1999 17:32:01
| 01/01/2000 17:32:01
| 31/12/2000 17:32:01
| 01/01/2001 17:32:01
| 13/06/1957 00:00:00
(65 rows)
SELECT '' AS seven, f1 AS european_sql FROM ABSTIME_TBL;
seven | european_sql
-------+----------------------------
| 14/01/1973 03:14:21.00 PST
| 01/05/1995 00:30:30.00 PDT
| 31/12/1969 16:00:00.00 PST
seven | european_sql
-------+-------------------------
| 14/01/1973 03:14:21 PST
| 01/05/1995 00:30:30 PDT
| 31/12/1969 16:00:00 PST
| infinity
| -infinity
| 10/05/1947 23:59:12.00 PST
| 10/05/1947 23:59:12 PST
| invalid
(7 rows)

View File

@ -1,7 +1,7 @@
--
-- TIME
--
CREATE TABLE TIME_TBL (f1 time);
CREATE TABLE TIME_TBL (f1 time(2));
INSERT INTO TIME_TBL VALUES ('00:00');
INSERT INTO TIME_TBL VALUES ('01:00');
INSERT INTO TIME_TBL VALUES ('02:03');
@ -15,8 +15,8 @@ INSERT INTO TIME_TBL VALUES ('12:01');
INSERT INTO TIME_TBL VALUES ('23:59');
INSERT INTO TIME_TBL VALUES ('11:59:59.99 PM');
SELECT f1 AS "Time" FROM TIME_TBL;
Time
----------
Time
-------------
00:00:00
01:00:00
02:03:00
@ -24,7 +24,7 @@ SELECT f1 AS "Time" FROM TIME_TBL;
12:00:00
12:01:00
23:59:00
23:59:59
23:59:59.99
(8 rows)
SELECT f1 AS "Three" FROM TIME_TBL WHERE f1 < '05:06:07';
@ -36,13 +36,13 @@ SELECT f1 AS "Three" FROM TIME_TBL WHERE f1 < '05:06:07';
(3 rows)
SELECT f1 AS "Five" FROM TIME_TBL WHERE f1 > '05:06:07';
Five
----------
Five
-------------
11:59:00
12:00:00
12:01:00
23:59:00
23:59:59
23:59:59.99
(5 rows)
SELECT f1 AS "None" FROM TIME_TBL WHERE f1 < '00:00';
@ -51,8 +51,8 @@ SELECT f1 AS "None" FROM TIME_TBL WHERE f1 < '00:00';
(0 rows)
SELECT f1 AS "Eight" FROM TIME_TBL WHERE f1 >= '00:00';
Eight
----------
Eight
-------------
00:00:00
01:00:00
02:03:00
@ -60,7 +60,7 @@ SELECT f1 AS "Eight" FROM TIME_TBL WHERE f1 >= '00:00';
12:00:00
12:01:00
23:59:00
23:59:59
23:59:59.99
(8 rows)
--

View File

@ -3,7 +3,7 @@
--
-- needed so tests pass even in Australia
SET australian_timezones = 'off';
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp without time zone);
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp(2) without time zone);
-- Shorthand values
-- Not directly usable for regression testing since these are not constants.
-- So, just try to test parser and hope for the best - thomas 97/04/26
@ -143,8 +143,8 @@ SELECT '' AS "64", d1 FROM TIMESTAMP_TBL;
| infinity
| Thu Jan 01 00:00:00 1970
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01.00 1997
| Mon Feb 10 17:32:02.00 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
@ -212,8 +212,8 @@ SELECT '' AS "48", d1 FROM TIMESTAMP_TBL
----+-----------------------------
| infinity
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01.00 1997
| Mon Feb 10 17:32:02.00 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
@ -296,8 +296,8 @@ SELECT '' AS "63", d1 FROM TIMESTAMP_TBL
| infinity
| Thu Jan 01 00:00:00 1970
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01.00 1997
| Mon Feb 10 17:32:02.00 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
@ -385,8 +385,8 @@ SELECT '' AS "49", d1 FROM TIMESTAMP_TBL
----+-----------------------------
| infinity
| Mon Feb 10 17:32:01 1997
| Mon Feb 10 17:32:01.00 1997
| Mon Feb 10 17:32:02.00 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
@ -440,8 +440,8 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
----+----------------------------------------
| @ 9863 days ago
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1.00 secs
| @ 39 days 17 hours 32 mins 2.00 secs
| @ 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
@ -503,8 +503,8 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
----+----------------------------------------
| @ 9863 days ago
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1.00 secs
| @ 39 days 17 hours 32 mins 2.00 secs
| @ 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
@ -557,127 +557,129 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
| @ 1460 days 17 hours 32 mins 1 sec
(54 rows)
SELECT '' AS "54", date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
SELECT '' AS "54", d1 as "timestamp",
date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
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 | year | month | day | hour | minute | second
----+------+-------+-----+------+--------+----------
| 1969 | 12 | 31 | 16 | 0 | 0
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1.000001
| 1997 | 2 | 10 | 9 | 32 | 1.999999
| 1997 | 2 | 10 | 9 | 32 | 1.4
| 1997 | 2 | 10 | 9 | 32 | 1.5
| 1997 | 2 | 10 | 9 | 32 | 1.6
| 1997 | 1 | 1 | 16 | 0 | 0
| 1997 | 1 | 1 | 19 | 4 | 5
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 6 | 10 | 10 | 32 | 1
| 2001 | 9 | 22 | 11 | 19 | 20
| 2000 | 3 | 15 | 0 | 14 | 1
| 2000 | 3 | 15 | 5 | 14 | 2
| 2000 | 3 | 15 | 4 | 14 | 3
| 2000 | 3 | 14 | 19 | 14 | 4
| 2000 | 3 | 14 | 18 | 14 | 5
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 0
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 6 | 10 | 11 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 11 | 9 | 32 | 1
| 1997 | 2 | 12 | 9 | 32 | 1
| 1997 | 2 | 13 | 9 | 32 | 1
| 1997 | 2 | 14 | 9 | 32 | 1
| 1997 | 2 | 15 | 9 | 32 | 1
| 1997 | 2 | 16 | 9 | 32 | 1
| 1997 | 2 | 16 | 9 | 32 | 1
| 1996 | 2 | 28 | 9 | 32 | 1
| 1996 | 2 | 29 | 9 | 32 | 1
| 1996 | 3 | 1 | 9 | 32 | 1
| 1996 | 12 | 30 | 9 | 32 | 1
| 1996 | 12 | 31 | 9 | 32 | 1
| 1997 | 1 | 1 | 9 | 32 | 1
| 1997 | 2 | 28 | 9 | 32 | 1
| 1997 | 3 | 1 | 9 | 32 | 1
| 1997 | 12 | 30 | 9 | 32 | 1
| 1997 | 12 | 31 | 9 | 32 | 1
| 1999 | 12 | 31 | 9 | 32 | 1
| 2000 | 1 | 1 | 9 | 32 | 1
| 2000 | 12 | 31 | 9 | 32 | 1
| 2001 | 1 | 1 | 9 | 32 | 1
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
| 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
| 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:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Tue Jun 10 17:32:01 1997 | 1997 | 6 | 10 | 17 | 32 | 1
| Sat Sep 22 18:19:20 2001 | 2001 | 9 | 22 | 18 | 19 | 20
| Wed Mar 15 08:14:01 2000 | 2000 | 3 | 15 | 8 | 14 | 1
| Wed Mar 15 13:14:02 2000 | 2000 | 3 | 15 | 13 | 14 | 2
| Wed Mar 15 12:14:03 2000 | 2000 | 3 | 15 | 12 | 14 | 3
| Wed Mar 15 03:14:04 2000 | 2000 | 3 | 15 | 3 | 14 | 4
| Wed Mar 15 02:14:05 2000 | 2000 | 3 | 15 | 2 | 14 | 5
| 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:00 1997 | 1997 | 2 | 10 | 17 | 32 | 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: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: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:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Tue Jun 10 18:32:01 1997 | 1997 | 6 | 10 | 18 | 32 | 1
| Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
| Tue Feb 11 17:32:01 1997 | 1997 | 2 | 11 | 17 | 32 | 1
| Wed Feb 12 17:32:01 1997 | 1997 | 2 | 12 | 17 | 32 | 1
| Thu Feb 13 17:32:01 1997 | 1997 | 2 | 13 | 17 | 32 | 1
| Fri Feb 14 17:32:01 1997 | 1997 | 2 | 14 | 17 | 32 | 1
| Sat Feb 15 17:32:01 1997 | 1997 | 2 | 15 | 17 | 32 | 1
| Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 17 | 32 | 1
| Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 17 | 32 | 1
| Wed Feb 28 17:32:01 1996 | 1996 | 2 | 28 | 17 | 32 | 1
| Thu Feb 29 17:32:01 1996 | 1996 | 2 | 29 | 17 | 32 | 1
| Fri Mar 01 17:32:01 1996 | 1996 | 3 | 1 | 17 | 32 | 1
| Mon Dec 30 17:32:01 1996 | 1996 | 12 | 30 | 17 | 32 | 1
| Tue Dec 31 17:32:01 1996 | 1996 | 12 | 31 | 17 | 32 | 1
| Wed Jan 01 17:32:01 1997 | 1997 | 1 | 1 | 17 | 32 | 1
| Fri Feb 28 17:32:01 1997 | 1997 | 2 | 28 | 17 | 32 | 1
| Sat Mar 01 17:32:01 1997 | 1997 | 3 | 1 | 17 | 32 | 1
| Tue Dec 30 17:32:01 1997 | 1997 | 12 | 30 | 17 | 32 | 1
| Wed Dec 31 17:32:01 1997 | 1997 | 12 | 31 | 17 | 32 | 1
| Fri Dec 31 17:32:01 1999 | 1999 | 12 | 31 | 17 | 32 | 1
| Sat Jan 01 17:32:01 2000 | 2000 | 1 | 1 | 17 | 32 | 1
| Sun Dec 31 17:32:01 2000 | 2000 | 12 | 31 | 17 | 32 | 1
| Mon Jan 01 17:32:01 2001 | 2001 | 1 | 1 | 17 | 32 | 1
(54 rows)
SELECT '' AS "54", date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
SELECT '' AS "54", d1 as "timestamp",
date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
date_part( 'usec', d1) AS usec
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | quarter | msec | usec
----+---------+----------------------+-------------------
| 4 | 0 | 0
| 1 | 0 | 0
| 1 | 0.000999999999917733 | 0.999999999917733
| 1 | 999.999 | 999999
| 1 | 400 | 400000
| 1 | 500 | 500000
| 1 | 600 | 600000
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 2 | 0 | 0
| 3 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 2 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
54 | timestamp | quarter | msec | usec
----+-----------------------------+---------+------+--------
| Thu Jan 01 00:00:00 1970 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:02 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01.40 1997 | 1 | 400 | 400000
| Mon Feb 10 17:32:01.50 1997 | 1 | 500 | 500000
| Mon Feb 10 17:32:01.60 1997 | 1 | 600 | 600000
| Thu Jan 02 00:00:00 1997 | 1 | 0 | 0
| Thu Jan 02 03:04:05 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Tue Jun 10 17:32:01 1997 | 2 | 0 | 0
| Sat Sep 22 18:19:20 2001 | 3 | 0 | 0
| Wed Mar 15 08:14:01 2000 | 1 | 0 | 0
| Wed Mar 15 13:14:02 2000 | 1 | 0 | 0
| Wed Mar 15 12:14:03 2000 | 1 | 0 | 0
| Wed Mar 15 03:14:04 2000 | 1 | 0 | 0
| Wed Mar 15 02:14:05 2000 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:00 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Tue Jun 10 18:32:01 1997 | 2 | 0 | 0
| Mon Feb 10 17:32:01 1997 | 1 | 0 | 0
| Tue Feb 11 17:32:01 1997 | 1 | 0 | 0
| Wed Feb 12 17:32:01 1997 | 1 | 0 | 0
| Thu Feb 13 17:32:01 1997 | 1 | 0 | 0
| Fri Feb 14 17:32:01 1997 | 1 | 0 | 0
| Sat Feb 15 17:32:01 1997 | 1 | 0 | 0
| Sun Feb 16 17:32:01 1997 | 1 | 0 | 0
| Sun Feb 16 17:32:01 1997 | 1 | 0 | 0
| Wed Feb 28 17:32:01 1996 | 1 | 0 | 0
| Thu Feb 29 17:32:01 1996 | 1 | 0 | 0
| Fri Mar 01 17:32:01 1996 | 1 | 0 | 0
| Mon Dec 30 17:32:01 1996 | 4 | 0 | 0
| Tue Dec 31 17:32:01 1996 | 4 | 0 | 0
| Wed Jan 01 17:32:01 1997 | 1 | 0 | 0
| Fri Feb 28 17:32:01 1997 | 1 | 0 | 0
| Sat Mar 01 17:32:01 1997 | 1 | 0 | 0
| Tue Dec 30 17:32:01 1997 | 4 | 0 | 0
| Wed Dec 31 17:32:01 1997 | 4 | 0 | 0
| Fri Dec 31 17:32:01 1999 | 4 | 0 | 0
| Sat Jan 01 17:32:01 2000 | 1 | 0 | 0
| Sun Dec 31 17:32:01 2000 | 4 | 0 | 0
| Mon Jan 01 17:32:01 2001 | 1 | 0 | 0
(54 rows)
-- TO_CHAR()
@ -970,7 +972,7 @@ SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS')
| 12 12 00 00 00 0
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 02 63122
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
@ -1040,7 +1042,7 @@ SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quo
| HH:MI:SS is 12:00:00 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:02 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
@ -1110,7 +1112,7 @@ SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS')
| 00--text--00--text--00
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--02
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--01
@ -1251,7 +1253,7 @@ SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. H
| 1970 A.D. 1970 a.d. 1970 ad 12:00:00 A.M. 12:00:00 a.m. 12:00:00 am
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:02 P.M. 05:32:02 p.m. 05:32:02 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm

View File

@ -3,7 +3,7 @@
--
-- needed so tests pass even in Australia
SET australian_timezones = 'off';
CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp with time zone);
CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp(2) with time zone);
INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
INSERT INTO TIMESTAMPTZ_TBL VALUES ('today');
@ -140,8 +140,8 @@ SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL;
| infinity
| Wed Dec 31 16:00:00 1969 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01.00 1997 PST
| Mon Feb 10 17:32:02.00 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
@ -209,8 +209,8 @@ SELECT '' AS "48", d1 FROM TIMESTAMPTZ_TBL
----+---------------------------------
| infinity
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01.00 1997 PST
| Mon Feb 10 17:32:02.00 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
@ -293,8 +293,8 @@ SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL
| infinity
| Wed Dec 31 16:00:00 1969 PST
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01.00 1997 PST
| Mon Feb 10 17:32:02.00 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
@ -382,8 +382,8 @@ SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL
----+---------------------------------
| infinity
| Mon Feb 10 17:32:01 1997 PST
| Mon Feb 10 17:32:01.00 1997 PST
| Mon Feb 10 17:32:02.00 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
@ -437,8 +437,8 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
----+----------------------------------------
| @ 9863 days 8 hours ago
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1.00 secs
| @ 39 days 17 hours 32 mins 2.00 secs
| @ 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
@ -499,8 +499,8 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
----+----------------------------------------
| @ 9863 days 8 hours ago
| @ 39 days 17 hours 32 mins 1 sec
| @ 39 days 17 hours 32 mins 1.00 secs
| @ 39 days 17 hours 32 mins 2.00 secs
| @ 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
@ -553,127 +553,129 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
| @ 1460 days 17 hours 32 mins 1 sec
(54 rows)
SELECT '' AS "54", date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
SELECT '' AS "54", d1 as timestamptz,
date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
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 | year | month | day | hour | minute | second
----+------+-------+-----+------+--------+----------
| 1969 | 12 | 31 | 16 | 0 | 0
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1.000001
| 1997 | 2 | 10 | 17 | 32 | 1.999999
| 1997 | 2 | 10 | 17 | 32 | 1.4
| 1997 | 2 | 10 | 17 | 32 | 1.5
| 1997 | 2 | 10 | 17 | 32 | 1.6
| 1997 | 1 | 2 | 0 | 0 | 0
| 1997 | 1 | 2 | 3 | 4 | 5
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 6 | 10 | 17 | 32 | 1
| 2001 | 9 | 22 | 11 | 19 | 20
| 2000 | 3 | 15 | 8 | 14 | 1
| 2000 | 3 | 15 | 4 | 14 | 2
| 2000 | 3 | 15 | 2 | 14 | 3
| 2000 | 3 | 15 | 3 | 14 | 4
| 2000 | 3 | 15 | 1 | 14 | 5
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 0
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 2 | 10 | 9 | 32 | 1
| 1997 | 6 | 10 | 18 | 32 | 1
| 1997 | 2 | 10 | 17 | 32 | 1
| 1997 | 2 | 11 | 17 | 32 | 1
| 1997 | 2 | 12 | 17 | 32 | 1
| 1997 | 2 | 13 | 17 | 32 | 1
| 1997 | 2 | 14 | 17 | 32 | 1
| 1997 | 2 | 15 | 17 | 32 | 1
| 1997 | 2 | 16 | 17 | 32 | 1
| 1997 | 2 | 16 | 17 | 32 | 1
| 1996 | 2 | 28 | 17 | 32 | 1
| 1996 | 2 | 29 | 17 | 32 | 1
| 1996 | 3 | 1 | 17 | 32 | 1
| 1996 | 12 | 30 | 17 | 32 | 1
| 1996 | 12 | 31 | 17 | 32 | 1
| 1997 | 1 | 1 | 17 | 32 | 1
| 1997 | 2 | 28 | 17 | 32 | 1
| 1997 | 3 | 1 | 17 | 32 | 1
| 1997 | 12 | 30 | 17 | 32 | 1
| 1997 | 12 | 31 | 17 | 32 | 1
| 1999 | 12 | 31 | 17 | 32 | 1
| 2000 | 1 | 1 | 17 | 32 | 1
| 2000 | 12 | 31 | 17 | 32 | 1
| 2001 | 1 | 1 | 17 | 32 | 1
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
| 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
| 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:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
| Tue Jun 10 17:32:01 1997 PDT | 1997 | 6 | 10 | 17 | 32 | 1
| Sat Sep 22 11:19:20 2001 PDT | 2001 | 9 | 22 | 11 | 19 | 20
| Wed Mar 15 08:14:01 2000 PST | 2000 | 3 | 15 | 8 | 14 | 1
| Wed Mar 15 04:14:02 2000 PST | 2000 | 3 | 15 | 4 | 14 | 2
| Wed Mar 15 02:14:03 2000 PST | 2000 | 3 | 15 | 2 | 14 | 3
| Wed Mar 15 03:14:04 2000 PST | 2000 | 3 | 15 | 3 | 14 | 4
| Wed Mar 15 01:14:05 2000 PST | 2000 | 3 | 15 | 1 | 14 | 5
| 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:00 1997 PST | 1997 | 2 | 10 | 17 | 32 | 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: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:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
| Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
| Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
| Tue Jun 10 18:32:01 1997 PDT | 1997 | 6 | 10 | 18 | 32 | 1
| Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
| Tue Feb 11 17:32:01 1997 PST | 1997 | 2 | 11 | 17 | 32 | 1
| Wed Feb 12 17:32:01 1997 PST | 1997 | 2 | 12 | 17 | 32 | 1
| Thu Feb 13 17:32:01 1997 PST | 1997 | 2 | 13 | 17 | 32 | 1
| Fri Feb 14 17:32:01 1997 PST | 1997 | 2 | 14 | 17 | 32 | 1
| Sat Feb 15 17:32:01 1997 PST | 1997 | 2 | 15 | 17 | 32 | 1
| Sun Feb 16 17:32:01 1997 PST | 1997 | 2 | 16 | 17 | 32 | 1
| Sun Feb 16 17:32:01 1997 PST | 1997 | 2 | 16 | 17 | 32 | 1
| Wed Feb 28 17:32:01 1996 PST | 1996 | 2 | 28 | 17 | 32 | 1
| Thu Feb 29 17:32:01 1996 PST | 1996 | 2 | 29 | 17 | 32 | 1
| Fri Mar 01 17:32:01 1996 PST | 1996 | 3 | 1 | 17 | 32 | 1
| Mon Dec 30 17:32:01 1996 PST | 1996 | 12 | 30 | 17 | 32 | 1
| Tue Dec 31 17:32:01 1996 PST | 1996 | 12 | 31 | 17 | 32 | 1
| Wed Jan 01 17:32:01 1997 PST | 1997 | 1 | 1 | 17 | 32 | 1
| Fri Feb 28 17:32:01 1997 PST | 1997 | 2 | 28 | 17 | 32 | 1
| Sat Mar 01 17:32:01 1997 PST | 1997 | 3 | 1 | 17 | 32 | 1
| Tue Dec 30 17:32:01 1997 PST | 1997 | 12 | 30 | 17 | 32 | 1
| Wed Dec 31 17:32:01 1997 PST | 1997 | 12 | 31 | 17 | 32 | 1
| Fri Dec 31 17:32:01 1999 PST | 1999 | 12 | 31 | 17 | 32 | 1
| Sat Jan 01 17:32:01 2000 PST | 2000 | 1 | 1 | 17 | 32 | 1
| Sun Dec 31 17:32:01 2000 PST | 2000 | 12 | 31 | 17 | 32 | 1
| Mon Jan 01 17:32:01 2001 PST | 2001 | 1 | 1 | 17 | 32 | 1
(54 rows)
SELECT '' AS "54", date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
SELECT '' AS "54", d1 as timestamptz,
date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
date_part( 'usec', d1) AS usec
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
54 | quarter | msec | usec
----+---------+----------------------+-------------------
| 4 | 0 | 0
| 1 | 0 | 0
| 1 | 0.000999999999917733 | 0.999999999917733
| 1 | 999.999 | 999999
| 1 | 400 | 400000
| 1 | 500 | 500000
| 1 | 600 | 600000
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 2 | 0 | 0
| 3 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 2 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
| 4 | 0 | 0
| 1 | 0 | 0
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 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:02 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01.40 1997 PST | 1 | 400 | 400000
| Mon Feb 10 17:32:01.50 1997 PST | 1 | 500 | 500000
| Mon Feb 10 17:32:01.60 1997 PST | 1 | 600 | 600000
| Thu Jan 02 00:00:00 1997 PST | 1 | 0 | 0
| Thu Jan 02 03:04:05 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Tue Jun 10 17:32:01 1997 PDT | 2 | 0 | 0
| Sat Sep 22 11:19:20 2001 PDT | 3 | 0 | 0
| Wed Mar 15 08:14:01 2000 PST | 1 | 0 | 0
| Wed Mar 15 04:14:02 2000 PST | 1 | 0 | 0
| Wed Mar 15 02:14:03 2000 PST | 1 | 0 | 0
| Wed Mar 15 03:14:04 2000 PST | 1 | 0 | 0
| Wed Mar 15 01:14:05 2000 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:00 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 09:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 09:32:01 1997 PST | 1 | 0 | 0
| Mon Feb 10 09:32:01 1997 PST | 1 | 0 | 0
| Tue Jun 10 18:32:01 1997 PDT | 2 | 0 | 0
| Mon Feb 10 17:32:01 1997 PST | 1 | 0 | 0
| Tue Feb 11 17:32:01 1997 PST | 1 | 0 | 0
| Wed Feb 12 17:32:01 1997 PST | 1 | 0 | 0
| Thu Feb 13 17:32:01 1997 PST | 1 | 0 | 0
| Fri Feb 14 17:32:01 1997 PST | 1 | 0 | 0
| Sat Feb 15 17:32:01 1997 PST | 1 | 0 | 0
| Sun Feb 16 17:32:01 1997 PST | 1 | 0 | 0
| Sun Feb 16 17:32:01 1997 PST | 1 | 0 | 0
| Wed Feb 28 17:32:01 1996 PST | 1 | 0 | 0
| Thu Feb 29 17:32:01 1996 PST | 1 | 0 | 0
| Fri Mar 01 17:32:01 1996 PST | 1 | 0 | 0
| Mon Dec 30 17:32:01 1996 PST | 4 | 0 | 0
| Tue Dec 31 17:32:01 1996 PST | 4 | 0 | 0
| Wed Jan 01 17:32:01 1997 PST | 1 | 0 | 0
| Fri Feb 28 17:32:01 1997 PST | 1 | 0 | 0
| Sat Mar 01 17:32:01 1997 PST | 1 | 0 | 0
| Tue Dec 30 17:32:01 1997 PST | 4 | 0 | 0
| Wed Dec 31 17:32:01 1997 PST | 4 | 0 | 0
| Fri Dec 31 17:32:01 1999 PST | 4 | 0 | 0
| Sat Jan 01 17:32:01 2000 PST | 1 | 0 | 0
| Sun Dec 31 17:32:01 2000 PST | 4 | 0 | 0
| Mon Jan 01 17:32:01 2001 PST | 1 | 0 | 0
(54 rows)
-- TO_CHAR()
@ -969,7 +971,7 @@ SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS')
| 04 04 16 00 00 57600
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 02 63122
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
| 05 05 17 32 01 63121
@ -1039,7 +1041,7 @@ SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quo
| HH:MI:SS is 04:00:00 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:02 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
| HH:MI:SS is 05:32:01 "text between quote marks"
@ -1110,7 +1112,7 @@ SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS')
| 16--text--00--text--00
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--02
| 17--text--32--text--01
| 17--text--32--text--01
| 17--text--32--text--01
@ -1251,7 +1253,7 @@ SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. H
| 1969 A.D. 1969 a.d. 1969 ad 04:00:00 P.M. 04:00:00 p.m. 04:00:00 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:02 P.M. 05:32:02 p.m. 05:32:02 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
| 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm

View File

@ -1,7 +1,7 @@
--
-- TIMETZ
--
CREATE TABLE TIMETZ_TBL (f1 time with time zone);
CREATE TABLE TIMETZ_TBL (f1 time(2) with time zone);
INSERT INTO TIMETZ_TBL VALUES ('00:01 PDT');
INSERT INTO TIMETZ_TBL VALUES ('01:00 PDT');
INSERT INTO TIMETZ_TBL VALUES ('02:03 PDT');
@ -13,8 +13,8 @@ INSERT INTO TIMETZ_TBL VALUES ('12:01 PDT');
INSERT INTO TIMETZ_TBL VALUES ('23:59 PDT');
INSERT INTO TIMETZ_TBL VALUES ('11:59:59.99 PM PDT');
SELECT f1 AS "Time TZ" FROM TIMETZ_TBL;
Time TZ
-------------
Time TZ
----------------
00:01:00-07
01:00:00-07
02:03:00-07
@ -24,7 +24,7 @@ SELECT f1 AS "Time TZ" FROM TIMETZ_TBL;
12:00:00-07
12:01:00-07
23:59:00-07
23:59:59-07
23:59:59.99-07
(10 rows)
SELECT f1 AS "Three" FROM TIMETZ_TBL WHERE f1 < '05:06:07';
@ -36,15 +36,15 @@ SELECT f1 AS "Three" FROM TIMETZ_TBL WHERE f1 < '05:06:07';
(3 rows)
SELECT f1 AS "Seven" FROM TIMETZ_TBL WHERE f1 > '05:06:07';
Seven
-------------
Seven
----------------
07:07:00-08
08:08:00-04
11:59:00-07
12:00:00-07
12:01:00-07
23:59:00-07
23:59:59-07
23:59:59.99-07
(7 rows)
SELECT f1 AS "None" FROM TIMETZ_TBL WHERE f1 < '00:00';
@ -53,8 +53,8 @@ SELECT f1 AS "None" FROM TIMETZ_TBL WHERE f1 < '00:00';
(0 rows)
SELECT f1 AS "Ten" FROM TIMETZ_TBL WHERE f1 >= '00:00';
Ten
-------------
Ten
----------------
00:01:00-07
01:00:00-07
02:03:00-07
@ -64,7 +64,7 @@ SELECT f1 AS "Ten" FROM TIMETZ_TBL WHERE f1 >= '00:00';
12:00:00-07
12:01:00-07
23:59:00-07
23:59:59-07
23:59:59.99-07
(10 rows)
--

View File

@ -35,10 +35,13 @@ SELECT (timestamp without time zone 'today' = (timestamp without time zone 'tomo
SELECT (timestamp without time zone 'tomorrow' = (timestamp without time zone 'yesterday' + interval '2 days')) as "True";
SELECT (timestamp without time zone 'tomorrow' > 'now') as "True";
SELECT timestamp(date '1994-01-01', time '11:00') AS "Jan_01_1994_11am";
SELECT timestamp(date '1994-01-01', time '10:00') AS "Jan_01_1994_10am";
SELECT timestamp(date '1994-01-01', time '11:00-5') AS "Jan_01_1994_8am";
SELECT timestamp(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_11am";
-- Convert from date and time to timestamp
-- This test used to be timestamp(date,time) but no longer allowed by grammar
-- to enable support for SQL99 timestamp type syntax.
SELECT date '1994-01-01' + time '11:00' AS "Jan_01_1994_11am";
SELECT date '1994-01-01' + time '10:00' AS "Jan_01_1994_10am";
SELECT date '1994-01-01' + time '11:00-5' AS "Jan_01_1994_8am";
SELECT "timestamp"(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_11am";
SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
@ -170,20 +173,20 @@ INSERT INTO TEMP_TIMESTAMP (f1)
WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010';
SELECT '' AS "16", f1 AS timestamp
SELECT '' AS "16", f1 AS "timestamp"
FROM TEMP_TIMESTAMP
ORDER BY timestamp;
ORDER BY "timestamp";
SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 + t.f1 AS plus
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS interval, d.f1 + t.f1 AS plus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
ORDER BY plus, timestamp, interval;
ORDER BY plus, "timestamp", interval;
SELECT '' AS "160", d.f1 AS timestamp, t.f1 AS interval, d.f1 - t.f1 AS minus
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS interval, d.f1 - t.f1 AS minus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
WHERE isfinite(d.f1)
ORDER BY minus, timestamp, interval;
ORDER BY minus, "timestamp", interval;
SELECT '' AS "16", d.f1 AS timestamp, timestamp '1980-01-06 00:00 GMT' AS gpstime_zero,
SELECT '' AS "16", d.f1 AS "timestamp", timestamp '1980-01-06 00:00 GMT' AS gpstime_zero,
d.f1 - timestamp '1980-01-06 00:00 GMT' AS difference
FROM TEMP_TIMESTAMP d
ORDER BY difference;
@ -192,14 +195,6 @@ SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS d
FROM TEMP_TIMESTAMP d1, TEMP_TIMESTAMP d2
ORDER BY timestamp1, timestamp2, difference;
SELECT '' as "55", d1 as timestamp,
date_part('year', d1) AS year, date_part('month', d1) AS month,
date_part('day',d1) AS day, date_part('hour', d1) AS hour,
date_part('minute', d1) AS minute, date_part('second', d1) AS second
FROM TIMESTAMP_TBL
WHERE isfinite(d1) and d1 >= '1-jan-1900 GMT'
ORDER BY timestamp;
--
-- abstime, reltime arithmetic
--
@ -232,12 +227,12 @@ SELECT '' AS three, ABSTIME_TBL.*
-- Conversions
--
SELECT '' AS "16", f1 AS timestamp, date(f1) AS date
SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date
FROM TEMP_TIMESTAMP
WHERE f1 <> timestamp 'current'
ORDER BY date, timestamp;
ORDER BY date, "timestamp";
SELECT '' AS "16", f1 AS timestamp, abstime(f1) AS abstime
SELECT '' AS "16", f1 AS "timestamp", abstime(f1) AS abstime
FROM TEMP_TIMESTAMP
ORDER BY abstime;
@ -246,10 +241,10 @@ SELECT '' AS four, f1 AS abstime, date(f1) AS date
WHERE isfinite(f1) AND f1 <> abstime 'current'
ORDER BY date, abstime;
SELECT '' AS two, d1 AS timestamp, abstime(d1) AS abstime
SELECT '' AS two, d1 AS "timestamp", abstime(d1) AS abstime
FROM TIMESTAMP_TBL WHERE NOT isfinite(d1);
SELECT '' AS three, f1 as abstime, timestamp(f1) AS timestamp
SELECT '' AS three, f1 as abstime, cast(f1 as timestamp) AS "timestamp"
FROM ABSTIME_TBL WHERE NOT isfinite(f1);
SELECT '' AS ten, f1 AS interval, reltime(f1) AS reltime

View File

@ -2,7 +2,7 @@
-- TIME
--
CREATE TABLE TIME_TBL (f1 time);
CREATE TABLE TIME_TBL (f1 time(2));
INSERT INTO TIME_TBL VALUES ('00:00');
INSERT INTO TIME_TBL VALUES ('01:00');

View File

@ -4,7 +4,7 @@
-- needed so tests pass even in Australia
SET australian_timezones = 'off';
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp without time zone);
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp(2) without time zone);
-- Shorthand values
-- Not directly usable for regression testing since these are not constants.
@ -153,12 +153,14 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
WHERE d1 BETWEEN timestamp without time zone '1902-01-01'
AND timestamp without time zone '2038-01-01';
SELECT '' AS "54", date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
SELECT '' AS "54", d1 as "timestamp",
date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
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';
SELECT '' AS "54", date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
SELECT '' AS "54", d1 as "timestamp",
date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
date_part( 'usec', d1) AS usec
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';

View File

@ -4,7 +4,7 @@
-- needed so tests pass even in Australia
SET australian_timezones = 'off';
CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp with time zone);
CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp(2) with time zone);
INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
@ -148,12 +148,14 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
FROM TIMESTAMPTZ_TBL
WHERE d1 BETWEEN timestamp with time zone '1902-01-01' AND timestamp with time zone '2038-01-01';
SELECT '' AS "54", date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
SELECT '' AS "54", d1 as timestamptz,
date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
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';
SELECT '' AS "54", date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
SELECT '' AS "54", d1 as timestamptz,
date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
date_part( 'usec', d1) AS usec
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';

View File

@ -2,7 +2,7 @@
-- TIMETZ
--
CREATE TABLE TIMETZ_TBL (f1 time with time zone);
CREATE TABLE TIMETZ_TBL (f1 time(2) with time zone);
INSERT INTO TIMETZ_TBL VALUES ('00:01 PDT');
INSERT INTO TIMETZ_TBL VALUES ('01:00 PDT');