time.out 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. --
  2. -- TIME
  3. --
  4. CREATE TABLE TIME_TBL (f1 time(2));
  5. INSERT INTO TIME_TBL VALUES ('00:00');
  6. INSERT INTO TIME_TBL VALUES ('01:00');
  7. INSERT INTO TIME_TBL VALUES ('12:00');
  8. INSERT INTO TIME_TBL VALUES ('12:01');
  9. INSERT INTO TIME_TBL VALUES ('23:59');
  10. INSERT INTO TIME_TBL VALUES ('11:59:59.99 PM');
  11. SELECT f1 AS "None" FROM TIME_TBL WHERE f1 < '00:00';
  12. None
  13. ------
  14. (0 rows)
  15. -- Check edge cases
  16. SELECT '23:59:59.999999'::time;
  17. time
  18. -----------------
  19. 23:59:59.999999
  20. (1 row)
  21. SELECT '23:59:59.9999999'::time; -- rounds up
  22. time
  23. ----------
  24. 24:00:00
  25. (1 row)
  26. SELECT '23:59:60'::time; -- rounds up
  27. time
  28. ----------
  29. 24:00:00
  30. (1 row)
  31. SELECT '24:00:00'::time; -- allowed
  32. time
  33. ----------
  34. 24:00:00
  35. (1 row)
  36. SELECT '24:00:00.01'::time; -- not allowed
  37. ERROR: date/time field value out of range: "24:00:00.01"
  38. LINE 1: SELECT '24:00:00.01'::time;
  39. ^
  40. SELECT '23:59:60.01'::time; -- not allowed
  41. ERROR: date/time field value out of range: "23:59:60.01"
  42. LINE 1: SELECT '23:59:60.01'::time;
  43. ^
  44. SELECT '24:01:00'::time; -- not allowed
  45. ERROR: date/time field value out of range: "24:01:00"
  46. LINE 1: SELECT '24:01:00'::time;
  47. ^
  48. SELECT '25:00:00'::time; -- not allowed
  49. ERROR: date/time field value out of range: "25:00:00"
  50. LINE 1: SELECT '25:00:00'::time;
  51. ^
  52. --
  53. -- test EXTRACT
  54. --
  55. SELECT EXTRACT(MICROSECOND FROM TIME '2020-05-26 13:30:25.575401');
  56. extract
  57. ----------
  58. 25575401
  59. (1 row)
  60. SELECT EXTRACT(MILLISECOND FROM TIME '2020-05-26 13:30:25.575401');
  61. extract
  62. -----------
  63. 25575.401
  64. (1 row)
  65. SELECT EXTRACT(SECOND FROM TIME '2020-05-26 13:30:25.575401');
  66. extract
  67. -----------
  68. 25.575401
  69. (1 row)
  70. SELECT EXTRACT(MINUTE FROM TIME '2020-05-26 13:30:25.575401');
  71. extract
  72. ---------
  73. 30
  74. (1 row)
  75. SELECT EXTRACT(HOUR FROM TIME '2020-05-26 13:30:25.575401');
  76. extract
  77. ---------
  78. 13
  79. (1 row)
  80. SELECT EXTRACT(DAY FROM TIME '2020-05-26 13:30:25.575401'); -- error
  81. ERROR: "time" units "day" not recognized
  82. SELECT EXTRACT(FORTNIGHT FROM TIME '2020-05-26 13:30:25.575401'); -- error
  83. ERROR: "time" units "fortnight" not recognized
  84. SELECT EXTRACT(TIMEZONE FROM TIME '2020-05-26 13:30:25.575401'); -- error
  85. ERROR: "time" units "timezone" not recognized
  86. SELECT EXTRACT(EPOCH FROM TIME '2020-05-26 13:30:25.575401');
  87. extract
  88. --------------
  89. 48625.575401
  90. (1 row)
  91. -- date_part implementation is mostly the same as extract, so only
  92. -- test a few cases for additional coverage.
  93. SELECT date_part('microsecond', TIME '2020-05-26 13:30:25.575401');
  94. date_part
  95. -----------
  96. 25575401
  97. (1 row)
  98. SELECT date_part('millisecond', TIME '2020-05-26 13:30:25.575401');
  99. date_part
  100. -----------
  101. 25575.401
  102. (1 row)
  103. SELECT date_part('second', TIME '2020-05-26 13:30:25.575401');
  104. date_part
  105. -----------
  106. 25.575401
  107. (1 row)
  108. SELECT date_part('epoch', TIME '2020-05-26 13:30:25.575401');
  109. date_part
  110. --------------
  111. 48625.575401
  112. (1 row)