All regression tests pass except for rules.sql (unrelated).
Implement "date/time grand unification".
Transform datetime and timespan into timestamp and interval.
Deprecate datetime and timespan, though translate to new types in gram.y.
Transform all datetime and timespan catalog entries into new types.
Make "INTERVAL" reserved word allowed as a column identifier in gram.y.
Remove dt.h, dt.c files, and retarget datetime.h, datetime.c as utility
routines for all date/time types.
date.{h,c} now deals with date, time types.
timestamp.{h,c} now deals with timestamp, interval types.
nabstime.{h,c} now deals with abstime, reltime, tinterval types.
Make NUMERIC a known native type for purposes of type coersion. Not tested.
2000-02-16 18:27:27 +01:00
|
|
|
--
|
|
|
|
-- INTERVAL
|
|
|
|
--
|
|
|
|
|
2003-04-18 00:26:02 +02:00
|
|
|
SET DATESTYLE = 'ISO';
|
2000-11-06 17:03:47 +01:00
|
|
|
|
|
|
|
-- check acceptance of "time zone style"
|
2000-11-11 20:57:03 +01:00
|
|
|
SELECT INTERVAL '01:00' AS "One hour";
|
|
|
|
SELECT INTERVAL '+02:00' AS "Two hours";
|
|
|
|
SELECT INTERVAL '-08:00' AS "Eight hours";
|
|
|
|
SELECT INTERVAL '-05' AS "Five hours";
|
|
|
|
SELECT INTERVAL '-1 +02:03' AS "22 hours ago...";
|
|
|
|
SELECT INTERVAL '-1 days +02:03' AS "22 hours ago...";
|
|
|
|
SELECT INTERVAL '10 years -11 month -12 days +13:14' AS "9 years...";
|
2000-11-06 17:03:47 +01:00
|
|
|
|
All regression tests pass except for rules.sql (unrelated).
Implement "date/time grand unification".
Transform datetime and timespan into timestamp and interval.
Deprecate datetime and timespan, though translate to new types in gram.y.
Transform all datetime and timespan catalog entries into new types.
Make "INTERVAL" reserved word allowed as a column identifier in gram.y.
Remove dt.h, dt.c files, and retarget datetime.h, datetime.c as utility
routines for all date/time types.
date.{h,c} now deals with date, time types.
timestamp.{h,c} now deals with timestamp, interval types.
nabstime.{h,c} now deals with abstime, reltime, tinterval types.
Make NUMERIC a known native type for purposes of type coersion. Not tested.
2000-02-16 18:27:27 +01:00
|
|
|
CREATE TABLE INTERVAL_TBL (f1 interval);
|
|
|
|
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 10 day');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 34 year');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 3 months');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 14 seconds ago');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('1 day 2 hours 3 minutes 4 seconds');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('6 years');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months 12 hours');
|
|
|
|
|
|
|
|
-- badly formatted interval
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval');
|
|
|
|
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
|
|
|
|
|
|
|
|
-- test interval operators
|
|
|
|
|
|
|
|
SELECT '' AS ten, INTERVAL_TBL.*;
|
|
|
|
|
|
|
|
SELECT '' AS nine, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
|
|
|
|
|
|
|
|
SELECT '' AS three, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
|
|
|
|
|
|
|
|
SELECT '' AS three, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
|
|
|
|
|
|
|
|
SELECT '' AS one, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
|
|
|
|
|
|
|
|
SELECT '' AS five, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
|
|
|
|
|
|
|
|
SELECT '' AS nine, INTERVAL_TBL.*
|
|
|
|
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
|
|
|
|
|
|
|
|
SELECT '' AS fortyfive, r1.*, r2.*
|
|
|
|
FROM INTERVAL_TBL r1, INTERVAL_TBL r2
|
|
|
|
WHERE r1.f1 > r2.f1
|
|
|
|
ORDER BY r1.f1, r2.f1;
|
|
|
|
|
2000-11-06 17:03:47 +01:00
|
|
|
SET DATESTYLE = 'postgres';
|
|
|
|
|
|
|
|
SELECT '' AS ten, INTERVAL_TBL.*;
|
2001-05-18 18:02:01 +02:00
|
|
|
|
|
|
|
-- test avg(interval), which is somewhat fragile since people have been
|
|
|
|
-- known to change the allowed input syntax for type interval without
|
|
|
|
-- updating pg_aggregate.agginitval
|
|
|
|
|
|
|
|
select avg(f1) from interval_tbl;
|