mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Please find attached diffs for documentation and simple regression
tests for the new interval->day changes. I added tests for justify_hours() and justify_days() to interval.sql, as they take interval input and produce interval output. If there's a more appropriate place for them, please let me know. Michael Glaesemann
This commit is contained in:
@@ -598,6 +598,33 @@ SELECT (timestamp with time zone 'tomorrow' > 'now') as "True";
|
||||
t
|
||||
(1 row)
|
||||
|
||||
-- timestamp with time zone, interval arithmetic around DST change
|
||||
SET TIME ZONE 'CST7CDT';
|
||||
SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00";
|
||||
Apr 3, 12:00
|
||||
------------------------------
|
||||
Sun Apr 03 12:00:00 2005 CDT
|
||||
(1 row)
|
||||
|
||||
SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00";
|
||||
Apr 3, 13:00
|
||||
------------------------------
|
||||
Sun Apr 03 13:00:00 2005 CDT
|
||||
(1 row)
|
||||
|
||||
SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00";
|
||||
Apr 2, 12:00
|
||||
------------------------------
|
||||
Sat Apr 02 12:00:00 2005 CST
|
||||
(1 row)
|
||||
|
||||
SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00";
|
||||
Apr 2, 11:00
|
||||
------------------------------
|
||||
Sat Apr 02 11:00:00 2005 CST
|
||||
(1 row)
|
||||
|
||||
RESET TIME ZONE;
|
||||
SELECT timestamptz(date '1994-01-01', time '11:00') AS "Jan_01_1994_10am";
|
||||
Jan_01_1994_10am
|
||||
------------------------------
|
||||
|
||||
@@ -228,3 +228,16 @@ select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31
|
||||
@ 4541 years 4 mons 4 days 17 mins 31 secs
|
||||
(1 row)
|
||||
|
||||
-- test justify_hours() and justify_days()
|
||||
SELECT justify_hours(interval '6 months 3 days 52 hours 3 minutes 2 seconds') as "6 mons 5 days 4 hours 3 mins 2 seconds";
|
||||
6 mons 5 days 4 hours 3 mins 2 seconds
|
||||
----------------------------------------
|
||||
@ 6 mons 5 days 4 hours 3 mins 2 secs
|
||||
(1 row)
|
||||
|
||||
SELECT justify_days(interval '6 months 36 days 5 hours 4 minutes 3 seconds') as "7 mons 6 days 5 hours 4 mins 3 seconds";
|
||||
7 mons 6 days 5 hours 4 mins 3 seconds
|
||||
----------------------------------------
|
||||
@ 7 mons 6 days 5 hours 4 mins 3 secs
|
||||
(1 row)
|
||||
|
||||
|
||||
@@ -114,6 +114,15 @@ SELECT (timestamp with time zone 'today' = (timestamp with time zone 'tomorrow'
|
||||
SELECT (timestamp with time zone 'tomorrow' = (timestamp with time zone 'yesterday' + interval '2 days')) as "True";
|
||||
SELECT (timestamp with time zone 'tomorrow' > 'now') as "True";
|
||||
|
||||
-- timestamp with time zone, interval arithmetic around DST change
|
||||
SET TIME ZONE 'CST7CDT';
|
||||
SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00";
|
||||
SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00";
|
||||
SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00";
|
||||
SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00";
|
||||
RESET TIME ZONE;
|
||||
|
||||
|
||||
SELECT timestamptz(date '1994-01-01', time '11:00') AS "Jan_01_1994_10am";
|
||||
SELECT timestamptz(date '1994-01-01', time '10:00') AS "Jan_01_1994_9am";
|
||||
SELECT timestamptz(date '1994-01-01', time with time zone '11:00-8') AS "Jan_01_1994_11am";
|
||||
|
||||
@@ -69,3 +69,10 @@ select avg(f1) from interval_tbl;
|
||||
|
||||
-- test long interval input
|
||||
select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 seconds'::interval;
|
||||
|
||||
|
||||
-- test justify_hours() and justify_days()
|
||||
|
||||
SELECT justify_hours(interval '6 months 3 days 52 hours 3 minutes 2 seconds') as "6 mons 5 days 4 hours 3 mins 2 seconds";
|
||||
SELECT justify_days(interval '6 months 36 days 5 hours 4 minutes 3 seconds') as "7 mons 6 days 5 hours 4 mins 3 seconds";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user