tinterval.sql
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. CREATE TABLE TINTERVAL_TBL (f1  tinterval);
  2. INSERT INTO TINTERVAL_TBL (f1)
  3.    VALUES ('["-infinity" "infinity"]');
  4. INSERT INTO TINTERVAL_TBL (f1)
  5.    VALUES ('["May 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]');
  6. INSERT INTO TINTERVAL_TBL (f1)
  7.    VALUES ('["Sep 4, 1983 23:59:12" "Oct 4, 1983 23:59:12"]');
  8. INSERT INTO TINTERVAL_TBL (f1)
  9.    VALUES ('["epoch" "Mon May  1 00:30:30 1995"]');
  10. INSERT INTO TINTERVAL_TBL (f1)
  11.    VALUES ('["Feb 15 1990 12:15:03" "current"]');
  12. -- badly formatted tintervals 
  13. INSERT INTO TINTERVAL_TBL (f1)
  14.    VALUES ('["bad time specifications" ""]');
  15. INSERT INTO TINTERVAL_TBL (f1)
  16.    VALUES ('["" "infinity"]');
  17. -- test tinterval operators
  18. SELECT '' AS five, TINTERVAL_TBL.*;
  19. -- length ==
  20. SELECT '' AS one, t.*
  21.    FROM TINTERVAL_TBL t
  22.    WHERE t.f1 #= '@ 1 months';
  23. -- length <>
  24. SELECT '' AS three, t.*
  25.    FROM TINTERVAL_TBL t
  26.    WHERE t.f1 #<> '@ 1 months';
  27. -- length <
  28. SELECT '' AS zero, t.*
  29.    FROM TINTERVAL_TBL t
  30.    WHERE t.f1 #< '@ 1 month';
  31. -- length <=
  32. SELECT '' AS one, t.*
  33.    FROM TINTERVAL_TBL t
  34.    WHERE t.f1 #<= '@ 1 month';
  35. -- length >
  36. SELECT '' AS three, t.*
  37.    FROM TINTERVAL_TBL t
  38.    WHERE t.f1 #> '@ 1 year';
  39. -- length >=
  40. SELECT '' AS three, t.*
  41.    FROM TINTERVAL_TBL t
  42.    WHERE t.f1 #>= '@ 3 years';
  43. -- overlaps
  44. SELECT '' AS three, t1.*
  45.    FROM TINTERVAL_TBL t1
  46.    WHERE t1.f1 &&
  47.         '["Aug 15 14:23:19 1983" "Sep 16 14:23:19 1983"]'::tinterval;
  48. SET geqo TO 'off';
  49. SELECT '' AS five, t1.f1, t2.f1
  50.    FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
  51.    WHERE t1.f1 && t2.f1 and
  52.          t1.f1 = t2.f1
  53.    ORDER BY t1.f1, t2.f1;
  54. SELECT '' AS fourteen, t1.f1 AS interval1, t2.f1 AS interval2
  55.    FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
  56.    WHERE t1.f1 && t2.f1 and not t1.f1 = t2.f1
  57.    ORDER BY interval1, interval2;
  58. -- contains
  59. SELECT '' AS five, t1.f1
  60.    FROM TINTERVAL_TBL t1
  61.    WHERE not t1.f1 << 
  62.         '["Aug 15 14:23:19 1980" "Sep 16 14:23:19 1990"]'::tinterval
  63.    ORDER BY t1.f1;
  64. -- make time interval
  65. SELECT '' AS three, t1.f1
  66.    FROM TINTERVAL_TBL t1
  67.    WHERE t1.f1 &&
  68.         ('Aug 15 14:23:19 1983'::abstime <#>
  69.          'Sep 16 14:23:19 1983'::abstime)
  70.    ORDER BY t1.f1;
  71. RESET geqo;