timezone.slt 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Test (lack of) timezone support.
  10. statement ok
  11. SET TIME ZONE UTC
  12. statement ok
  13. SET TIME ZONE 'UTC'
  14. statement ok
  15. SET TIME ZONE 'uTc'
  16. statement ok
  17. SET TimeZone = 'uTc'
  18. statement error invalid value for parameter "TimeZone": "bad"
  19. SET TIME ZONE bad
  20. query T
  21. SHOW TIMEZONE
  22. ----
  23. UTC
  24. query T
  25. SHOW TIME ZONE
  26. ----
  27. UTC
  28. statement ok
  29. SET TimeZone = '+00:00'
  30. statement ok
  31. SET TIMEZONE to '+00:00'
  32. query T
  33. SHOW TIMEZONE
  34. ----
  35. +00:00
  36. query T
  37. SHOW TIME ZONE
  38. ----
  39. +00:00
  40. query T
  41. SELECT TIMESTAMP '2020-12-21 18:53:49' AT TIME ZONE 'America/New_York'
  42. ----
  43. 2020-12-21 23:53:49+00
  44. query T
  45. SELECT TIMESTAMPTZ '2020-12-21 18:53:49 America/New_York'
  46. ----
  47. 2020-12-21 23:53:49+00
  48. query T
  49. SELECT timezone('America/New_York', TIMESTAMP '2020-12-21 18:53:49')
  50. ----
  51. 2020-12-21 23:53:49+00
  52. query T
  53. SELECT TIMESTAMP '2020-12-21 18:53:49' AT TIME ZONE 'PST'
  54. ----
  55. 2020-12-22 02:53:49+00
  56. query T
  57. SELECT TIMESTAMPTZ '2020-12-21 18:53:49 PST'
  58. ----
  59. 2020-12-22 02:53:49+00
  60. query T
  61. SELECT timezone('PST', TIMESTAMP '2020-12-21 18:53:49')
  62. ----
  63. 2020-12-22 02:53:49+00
  64. query T
  65. SELECT TIMESTAMP '2020-12-21 18:53:49' AT TIME ZONE 'America/New_York'
  66. ----
  67. 2020-12-21 23:53:49+00
  68. query T
  69. SELECT TIMESTAMPTZ '2020-12-21 18:53:49 America/New_York'
  70. ----
  71. 2020-12-21 23:53:49+00
  72. query T
  73. SELECT timezone('America/New_York', TIMESTAMP '2020-12-21 18:53:49')
  74. ----
  75. 2020-12-21 23:53:49+00
  76. query T
  77. SELECT timezone(INTERVAL '+11'HOUR, TIME '18:53:49')::time
  78. ----
  79. 05:53:49
  80. query T
  81. SELECT TIMESTAMPTZ '2020-12-21 18:53:49 Pacific/Auckland' AT TIME ZONE 'Turkey'
  82. ----
  83. 2020-12-21 08:53:49
  84. query T
  85. SELECT TIMESTAMPTZ '2007-02-01 00:00:00+5:30:16';
  86. ----
  87. 2007-01-31 18:29:44+00
  88. statement error timezone interval must not contain months or years
  89. SELECT timezone(INTERVAL '+11'MONTH, TIME '18:53:49')
  90. statement error invalid input syntax for type timestamp with time zone: Invalid timezone string \(\+16:60\): timezone hour invalid 16
  91. SELECT TIMESTAMPTZ '2020-01-01 00:00:00+16:60'
  92. query T
  93. SELECT TIMESTAMPTZ '2020-03-08 02:59:59 America/New_York'
  94. ----
  95. 2020-03-08 07:59:59+00
  96. query T
  97. SELECT TIMESTAMPTZ '2020-03-08 03:00:00 America/New_York'
  98. ----
  99. 2020-03-08 07:00:00+00
  100. query T
  101. SELECT TIMESTAMPTZ '2020-11-01 00:59:59 America/New_York'
  102. ----
  103. 2020-11-01 04:59:59+00
  104. query T
  105. SELECT TIMESTAMPTZ '2020-11-01 01:00:00 America/New_York'
  106. ----
  107. 2020-11-01 06:00:00+00
  108. # Regression for 20324
  109. query error timestamp out of range
  110. SELECT pg_catalog.timezone(-INTERVAL '1' MINUTE, TIMESTAMP '95143-12-31 23:59:59' + INTERVAL '167 MILLENNIUM')
  111. # Regression for database-issues#6170
  112. query error timestamp out of range
  113. SELECT pg_catalog.timezone('JAPAN', TIMESTAMPTZ '95143-12-31 23:59:59+06' + INTERVAL '167 MILLENNIUM')
  114. # Test that POSIX is used for timezone() and AT TIME ZONE.
  115. query T
  116. SELECT timezone('+5', '0001-01-01 12:00:00 +6'::TIMESTAMPTZ);
  117. ----
  118. 0001-01-01 01:00:00
  119. query T
  120. SELECT '0001-01-01 12:00:00 +6'::TIMESTAMPTZ AT TIME ZONE '+5';
  121. ----
  122. 0001-01-01 01:00:00
  123. query T
  124. SELECT timezone('-5', '0001-01-01 12:00:00 -6'::TIMESTAMPTZ);
  125. ----
  126. 0001-01-01 23:00:00
  127. query T
  128. SELECT '0001-01-01 12:00:00 -6'::TIMESTAMPTZ AT TIME ZONE '-5';
  129. ----
  130. 0001-01-01 23:00:00
  131. query T
  132. SELECT timezone_offset('America/New_York', '2023-01-01T00:00:00+00')
  133. ----
  134. (EST,-05:00:00,00:00:00)
  135. query T
  136. SELECT timezone_offset('America/Los_Angeles', '2023-01-01T00:00:00+00')
  137. ----
  138. (PST,-08:00:00,00:00:00)
  139. query T
  140. SELECT timezone_offset('america/new_york', '2023-01-01T00:00:00+00')
  141. ----
  142. (EST,-05:00:00,00:00:00)
  143. query T
  144. SELECT timezone_offset('America/New_York', '2023-01-01T00:00:00+00').abbrev
  145. ----
  146. EST
  147. query T
  148. SELECT timezone_offset('America/New_York', '2023-01-01T00:00:00+00').base_utc_offset
  149. ----
  150. -05:00:00
  151. query T
  152. SELECT timezone_offset('America/New_York', '2023-01-01T00:00:00+00').dst_offset
  153. ----
  154. 00:00:00
  155. query T
  156. SELECT timezone_offset('America/New_York', '2023-06-01T00:00:00+00').base_utc_offset
  157. ----
  158. -05:00:00
  159. query T
  160. SELECT timezone_offset('America/New_York', '2023-06-01T00:00:00+00').dst_offset
  161. ----
  162. 01:00:00
  163. query T
  164. SELECT timezone_offset('America/New_York', '2023-11-05T05:00:00+00')
  165. ----
  166. (EDT,-05:00:00,01:00:00)
  167. query T
  168. SELECT timezone_offset('America/New_York', '2023-11-05T05:30:00+00')
  169. ----
  170. (EDT,-05:00:00,01:00:00)
  171. query T
  172. SELECT timezone_offset('America/New_York', '2023-11-05T06:00:00+00')
  173. ----
  174. (EST,-05:00:00,00:00:00)
  175. query T
  176. SELECT timezone_offset('Europe/Vienna', '2023-11-05T06:00:00 UTC')
  177. ----
  178. (CET,01:00:00,00:00:00)
  179. query T
  180. SELECT timezone_offset('Europe/Vienna', '2023-11-05T06:00:00 CET')
  181. ----
  182. (CET,01:00:00,00:00:00)
  183. query T
  184. SELECT timezone_offset('Europe/Vienna', '2023-11-05T06:00:00 CEST')
  185. ----
  186. (CET,01:00:00,00:00:00)
  187. query T
  188. SELECT timezone_offset('Europe/Vienna', '2023-06-05T06:00:00 CET')
  189. ----
  190. (CEST,01:00:00,01:00:00)
  191. query T
  192. SELECT timezone_offset('Europe/Vienna', '2023-06-05T06:00:00 CEST')
  193. ----
  194. (CEST,01:00:00,01:00:00)
  195. query T
  196. SELECT timezone_offset('Europe/Vienna', '2023-11-05T06:00:00.123+00')
  197. ----
  198. (CET,01:00:00,00:00:00)
  199. query T
  200. SELECT timezone_offset('Europe/Vienna', '2023-11-05T06:00:00')
  201. ----
  202. (CET,01:00:00,00:00:00)
  203. query T
  204. SELECT timezone_offset('Europe/Vienna', '2023-11-05')
  205. ----
  206. (CET,01:00:00,00:00:00)
  207. query T
  208. SELECT timezone_offset(NULL, '2023-11-05T06:00:00+00')
  209. ----
  210. NULL
  211. query T
  212. SELECT timezone_offset('Europe/Vienna', NULL)
  213. ----
  214. NULL
  215. query error invalid IANA Time Zone Database identifier: ''
  216. SELECT timezone_offset('', '2023-11-05T06:00:00+00')
  217. query error invalid IANA Time Zone Database identifier: 'America/New_Yorks'
  218. SELECT timezone_offset('America/New_Yorks', now())
  219. query error invalid IANA Time Zone Database identifier: 'PST'
  220. SELECT timezone_offset('PST', now())
  221. query error invalid IANA Time Zone Database identifier: '-05'
  222. SELECT timezone_offset('-05', now())