173 lines
8.5 KiB
Plaintext
173 lines
8.5 KiB
Plaintext
--
|
|
-- TINTERVAL
|
|
--
|
|
CREATE TABLE TINTERVAL_TBL (f1 tinterval);
|
|
-- Should accept any abstime,
|
|
-- so do not bother with extensive testing of values
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["-infinity" "infinity"]');
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["May 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]');
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["Sep 4, 1983 23:59:12" "Oct 4, 1983 23:59:12"]');
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["epoch" "Mon May 1 00:30:30 1995"]');
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["Feb 15 1990 12:15:03" "2001-09-23 11:12:13"]');
|
|
-- badly formatted tintervals
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["bad time specifications" ""]');
|
|
ERROR: invalid input syntax for type abstime: "bad time specifications"
|
|
LINE 2: VALUES ('["bad time specifications" ""]');
|
|
^
|
|
INSERT INTO TINTERVAL_TBL (f1)
|
|
VALUES ('["" "infinity"]');
|
|
ERROR: invalid input syntax for type abstime: ""
|
|
LINE 2: VALUES ('["" "infinity"]');
|
|
^
|
|
-- test tinterval operators
|
|
SELECT '' AS five, * FROM TINTERVAL_TBL;
|
|
five | f1
|
|
------+-----------------------------------------------------------------
|
|
| ["-infinity" "infinity"]
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
(5 rows)
|
|
|
|
-- length ==
|
|
SELECT '' AS one, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #= '@ 1 months';
|
|
one | f1
|
|
-----+-----------------------------------------------------------------
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
(1 row)
|
|
|
|
-- length <>
|
|
SELECT '' AS three, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #<> '@ 1 months';
|
|
three | f1
|
|
-------+-----------------------------------------------------------------
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
(3 rows)
|
|
|
|
-- length <
|
|
SELECT '' AS zero, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #< '@ 1 month';
|
|
zero | f1
|
|
------+----
|
|
(0 rows)
|
|
|
|
-- length <=
|
|
SELECT '' AS one, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #<= '@ 1 month';
|
|
one | f1
|
|
-----+-----------------------------------------------------------------
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
(1 row)
|
|
|
|
-- length >
|
|
SELECT '' AS three, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #> '@ 1 year';
|
|
three | f1
|
|
-------+-----------------------------------------------------------------
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
(3 rows)
|
|
|
|
-- length >=
|
|
SELECT '' AS three, t.*
|
|
FROM TINTERVAL_TBL t
|
|
WHERE t.f1 #>= '@ 3 years';
|
|
three | f1
|
|
-------+-----------------------------------------------------------------
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
(3 rows)
|
|
|
|
-- overlaps
|
|
SELECT '' AS three, t1.*
|
|
FROM TINTERVAL_TBL t1
|
|
WHERE t1.f1 &&
|
|
tinterval '["Aug 15 14:23:19 1983" "Sep 16 14:23:19 1983"]';
|
|
three | f1
|
|
-------+-----------------------------------------------------------------
|
|
| ["-infinity" "infinity"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
(3 rows)
|
|
|
|
SELECT '' AS five, t1.f1, t2.f1
|
|
FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
|
|
WHERE t1.f1 && t2.f1 and
|
|
t1.f1 = t2.f1
|
|
ORDER BY t1.f1, t2.f1;
|
|
five | f1 | f1
|
|
------+-----------------------------------------------------------------+-----------------------------------------------------------------
|
|
| ["-infinity" "infinity"] | ["-infinity" "infinity"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
(5 rows)
|
|
|
|
SELECT '' AS fourteen, t1.f1 AS interval1, t2.f1 AS interval2
|
|
FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
|
|
WHERE t1.f1 && t2.f1 and not t1.f1 = t2.f1
|
|
ORDER BY interval1, interval2;
|
|
fourteen | interval1 | interval2
|
|
----------+-----------------------------------------------------------------+-----------------------------------------------------------------
|
|
| ["-infinity" "infinity"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["-infinity" "infinity"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
| ["-infinity" "infinity"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["-infinity" "infinity"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["-infinity" "infinity"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["-infinity" "infinity"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["-infinity" "infinity"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["-infinity" "infinity"]
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
(14 rows)
|
|
|
|
-- contains
|
|
SELECT '' AS five, t1.f1
|
|
FROM TINTERVAL_TBL t1
|
|
WHERE not t1.f1 <<
|
|
tinterval '["Aug 15 14:23:19 1980" "Sep 16 14:23:19 1990"]'
|
|
ORDER BY t1.f1;
|
|
five | f1
|
|
------+-----------------------------------------------------------------
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
|
|
| ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
|
|
(3 rows)
|
|
|
|
-- make time interval
|
|
SELECT '' AS three, t1.f1
|
|
FROM TINTERVAL_TBL t1
|
|
WHERE t1.f1 &&
|
|
(abstime 'Aug 15 14:23:19 1983' <#>
|
|
abstime 'Sep 16 14:23:19 1983')
|
|
ORDER BY t1.f1;
|
|
three | f1
|
|
-------+-----------------------------------------------------------------
|
|
| ["-infinity" "infinity"]
|
|
| ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
|
|
| ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
|
|
(3 rows)
|
|
|