7
-- check acceptance of "time zone style"
8
SELECT INTERVAL '01:00' AS "One hour";
9
SELECT INTERVAL '+02:00' AS "Two hours";
10
SELECT INTERVAL '-08:00' AS "Eight hours";
11
SELECT INTERVAL '-05' AS "Five hours";
12
SELECT INTERVAL '-1 +02:03' AS "22 hours ago...";
13
SELECT INTERVAL '-1 days +02:03' AS "22 hours ago...";
14
SELECT INTERVAL '10 years -11 month -12 days +13:14' AS "9 years...";
16
CREATE TABLE INTERVAL_TBL (f1 interval);
18
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
19
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour');
20
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 10 day');
21
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 34 year');
22
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 3 months');
23
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 14 seconds ago');
24
INSERT INTO INTERVAL_TBL (f1) VALUES ('1 day 2 hours 3 minutes 4 seconds');
25
INSERT INTO INTERVAL_TBL (f1) VALUES ('6 years');
26
INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months');
27
INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months 12 hours');
29
-- badly formatted interval
30
INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval');
31
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
33
-- test interval operators
35
SELECT '' AS ten, INTERVAL_TBL.*;
37
SELECT '' AS nine, INTERVAL_TBL.*
38
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
40
SELECT '' AS three, INTERVAL_TBL.*
41
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
43
SELECT '' AS three, INTERVAL_TBL.*
44
WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
46
SELECT '' AS one, INTERVAL_TBL.*
47
WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
49
SELECT '' AS five, INTERVAL_TBL.*
50
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
52
SELECT '' AS nine, INTERVAL_TBL.*
53
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
55
SELECT '' AS fortyfive, r1.*, r2.*
56
FROM INTERVAL_TBL r1, INTERVAL_TBL r2
58
ORDER BY r1.f1, r2.f1;
60
SET DATESTYLE = 'postgres';
62
SELECT '' AS ten, INTERVAL_TBL.*;
64
-- test avg(interval), which is somewhat fragile since people have been
65
-- known to change the allowed input syntax for type interval without
66
-- updating pg_aggregate.agginitval
68
select avg(f1) from interval_tbl;