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

数据库系统

开发平台:

Unix_Linux

  1. --
  2. -- horology.sql
  3. --
  4. --
  5. -- datetime, timespan arithmetic
  6. --
  7. CREATE TABLE TEMP_DATETIME (f1 datetime);
  8. -- get some candidate input values
  9. INSERT INTO TEMP_DATETIME (f1)
  10.   SELECT d1 FROM DATETIME_TBL
  11.   WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
  12.    OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010';
  13. SELECT '' AS ten, f1 AS datetime
  14.   FROM TEMP_DATETIME
  15.   ORDER BY datetime;
  16. SELECT '' AS hundred, d.f1 AS datetime, t.f1 AS timespan, d.f1 + t.f1 AS plus
  17.   FROM TEMP_DATETIME d, TIMESPAN_TBL t
  18.   ORDER BY plus, datetime, timespan;
  19. SELECT '' AS hundred, d.f1 AS datetime, t.f1 AS timespan, d.f1 - t.f1 AS minus
  20.   FROM TEMP_DATETIME d, TIMESPAN_TBL t
  21.   WHERE isfinite(d.f1)
  22.   ORDER BY minus, datetime, timespan;
  23. SELECT '' AS ten, d.f1 AS datetime, '1980-01-06 00:00 GMT'::datetime AS gpstime_zero,
  24.    d.f1 - '1980-01-06 00:00 GMT'::datetime AS difference
  25.   FROM TEMP_DATETIME d
  26.   ORDER BY difference;
  27. SELECT '' AS hundred, d1.f1 AS datetime1, d2.f1 AS datetime2, d1.f1 - d2.f1 AS difference
  28.   FROM TEMP_DATETIME d1, TEMP_DATETIME d2
  29.   ORDER BY datetime1, datetime2, difference;
  30. SELECT '' as fifty, d1 as datetime,
  31.   date_part('year', d1) AS year, date_part('month', d1) AS month,
  32.   date_part('day',d1) AS day, date_part('hour', d1) AS hour,
  33.   date_part('minute', d1) AS minute, date_part('second', d1) AS second
  34.   FROM DATETIME_TBL
  35.   WHERE isfinite(d1) and d1 >= '1-jan-1900 GMT'
  36.   ORDER BY datetime;
  37. --
  38. -- abstime, reltime arithmetic
  39. --
  40. SELECT '' AS four, f1 AS abstime,
  41.   date_part('year', f1) AS year, date_part('month', f1) AS month,
  42.   date_part('day',f1) AS day, date_part('hour', f1) AS hour,
  43.   date_part('minute', f1) AS minute, date_part('second', f1) AS second
  44.   FROM ABSTIME_TBL
  45.   WHERE isfinite(f1) and f1 <> 'current'::abstime
  46.   ORDER BY abstime;
  47. --
  48. -- conversions
  49. --
  50. SELECT '' AS ten, f1 AS datetime, date( f1) AS date
  51.   FROM TEMP_DATETIME
  52.   WHERE f1 <> 'current'::datetime
  53.   ORDER BY date;
  54. SELECT '' AS ten, f1 AS datetime, abstime( f1) AS abstime
  55.   FROM TEMP_DATETIME
  56.   ORDER BY abstime;
  57. SELECT '' AS five, f1 AS abstime, date( f1) AS date
  58.   FROM ABSTIME_TBL
  59.   WHERE isfinite(f1) AND f1 <> 'current'::abstime
  60.   ORDER BY date;
  61. SELECT '' AS five, d1 AS datetime, abstime(d1) AS abstime
  62.   FROM DATETIME_TBL WHERE NOT isfinite(d1);
  63. SELECT '' AS three, f1 as abstime, datetime(f1) AS datetime
  64.   FROM ABSTIME_TBL WHERE NOT isfinite(f1);
  65. SELECT '' AS ten, f1 AS timespan, reltime( f1) AS reltime
  66.   FROM TIMESPAN_TBL;
  67. SELECT '' AS six, f1 as reltime, timespan( f1) AS timespan
  68.   FROM RELTIME_TBL;
  69. DROP TABLE TEMP_DATETIME;
  70. --
  71. -- formats
  72. --
  73. SET DateStyle TO 'US,Postgres';
  74. SHOW DateStyle;
  75. SELECT '' AS sixty_two, d1 AS us_postgres FROM DATETIME_TBL;
  76. SELECT '' AS eight, f1 AS us_postgres FROM ABSTIME_TBL;
  77. SET DateStyle TO 'US,ISO';
  78. SELECT '' AS sixty_two, d1 AS us_iso FROM DATETIME_TBL;
  79. SELECT '' AS eight, f1 AS us_iso FROM ABSTIME_TBL;
  80. SET DateStyle TO 'US,SQL';
  81. SHOW DateStyle;
  82. SELECT '' AS sixty_two, d1 AS us_sql FROM DATETIME_TBL;
  83. SELECT '' AS eight, f1 AS us_sql FROM ABSTIME_TBL;
  84. SET DateStyle TO 'European,Postgres';
  85. SHOW DateStyle;
  86. INSERT INTO DATETIME_TBL VALUES('13/06/1957');
  87. SELECT count(*) as one FROM DATETIME_TBL WHERE d1 = 'Jun 13 1957';
  88. SELECT '' AS sixty_three, d1 AS european_postgres FROM DATETIME_TBL;
  89. SELECT '' AS eight, f1 AS european_postgres FROM ABSTIME_TBL;
  90. SET DateStyle TO 'European,ISO';
  91. SHOW DateStyle;
  92. SELECT '' AS sixty_three, d1 AS european_iso FROM DATETIME_TBL;
  93. SELECT '' AS eight, f1 AS european_iso FROM ABSTIME_TBL;
  94. SET DateStyle TO 'European,SQL';
  95. SHOW DateStyle;
  96. SELECT '' AS sixty_three, d1 AS european_sql FROM DATETIME_TBL;
  97. SELECT '' AS eight, f1 AS european_sql FROM ABSTIME_TBL;
  98. RESET DateStyle;
  99. SHOW DateStyle;
  100. --
  101. -- formats
  102. --
  103. SET DateStyle TO 'US,Postgres';
  104. SHOW DateStyle;
  105. SELECT '' AS sixty_two, d1 AS us_postgres FROM DATETIME_TBL;
  106. SELECT '' AS eight, f1 AS us_postgres FROM ABSTIME_TBL;
  107. SET DateStyle TO 'US,ISO';
  108. SELECT '' AS sixty_two, d1 AS us_iso FROM DATETIME_TBL;
  109. SELECT '' AS eight, f1 AS us_iso FROM ABSTIME_TBL;
  110. SET DateStyle TO 'US,SQL';
  111. SHOW DateStyle;
  112. SELECT '' AS sixty_two, d1 AS us_sql FROM DATETIME_TBL;
  113. SELECT '' AS eight, f1 AS us_sql FROM ABSTIME_TBL;
  114. SET DateStyle TO 'European,Postgres';
  115. SHOW DateStyle;
  116. INSERT INTO DATETIME_TBL VALUES('13/06/1957');
  117. SELECT count(*) as one FROM DATETIME_TBL WHERE d1 = 'Jun 13 1957';
  118. SELECT '' AS sixty_three, d1 AS european_postgres FROM DATETIME_TBL;
  119. SELECT '' AS eight, f1 AS european_postgres FROM ABSTIME_TBL;
  120. SET DateStyle TO 'European,ISO';
  121. SHOW DateStyle;
  122. SELECT '' AS sixty_three, d1 AS european_iso FROM DATETIME_TBL;
  123. SELECT '' AS eight, f1 AS european_iso FROM ABSTIME_TBL;
  124. SET DateStyle TO 'European,SQL';
  125. SHOW DateStyle;
  126. SELECT '' AS sixty_three, d1 AS european_sql FROM DATETIME_TBL;
  127. SELECT '' AS eight, f1 AS european_sql FROM ABSTIME_TBL;
  128. RESET DateStyle;
  129. SHOW DateStyle;