88 lines
2.0 KiB
SQL
88 lines
2.0 KiB
SQL
# name: test/optimizer/date_trunc_simplification_icu.test
|
|
# description: test DATE_TRUNC() constant simplifications that require icu
|
|
# group: [optimizer]
|
|
|
|
require icu
|
|
|
|
statement ok
|
|
PRAGMA enable_verification;
|
|
|
|
statement ok
|
|
set Calendar='gregorian';
|
|
|
|
#
|
|
# check operation with hour offsets that aren't complete hours
|
|
#
|
|
|
|
statement ok
|
|
create table test(d TIMESTAMPTZ);
|
|
|
|
statement ok
|
|
insert into test values ('2025-01-01 01:01:00+02:10'), ('2025-01-10 19:00:00-06:45');
|
|
|
|
statement ok
|
|
set timezone='utc';
|
|
|
|
query I
|
|
select * from test where date_trunc('day', d) < '2025-01-01'::TIMESTAMPTZ;
|
|
----
|
|
2024-12-31 22:51:00+00
|
|
|
|
query I
|
|
select * from test where date_trunc('day', d) >= '2025-01-01'::TIMESTAMPTZ;
|
|
----
|
|
2025-01-11 01:45:00+00
|
|
|
|
query I
|
|
select * from test where date_trunc('day', d) <= '2025-01-10'::TIMESTAMPTZ;
|
|
----
|
|
2024-12-31 22:51:00+00
|
|
|
|
query I
|
|
select * from test where date_trunc('day', d) > '2025-01-10'::TIMESTAMPTZ;
|
|
----
|
|
2025-01-11 01:45:00+00
|
|
|
|
#
|
|
# check correctness on DST edge cases using the St. Johns timezone
|
|
#
|
|
|
|
statement ok
|
|
set TimeZone='America/St_Johns';
|
|
|
|
statement ok
|
|
create table test2(d TIMESTAMPTZ);
|
|
|
|
statement ok
|
|
insert into test2 values ('2025-03-09T01:05:00'),
|
|
('2025-03-09T03:05:00'),
|
|
('2025-11-02T00:30:00'),
|
|
('2025-11-02T01:30:00');
|
|
|
|
query I
|
|
select * from test2 where date_trunc('hour', d) < '2025-03-09T05:00:00+00'::TIMESTAMPTZ;
|
|
----
|
|
2025-03-09 01:05:00-03:30
|
|
|
|
query I
|
|
select * from test2 where date_trunc('hour', d) <= '2025-03-09T05:30:00+00'::TIMESTAMPTZ;
|
|
----
|
|
2025-03-09 01:05:00-03:30
|
|
2025-03-09 03:05:00-02:30
|
|
|
|
query I
|
|
select * from test2 where date_trunc('hour', d) > '2025-11-02T03:30:00+00'::TIMESTAMPTZ;
|
|
----
|
|
2025-11-02 01:30:00-03:30
|
|
|
|
query I
|
|
select * from test2 where date_trunc('hour', d) > '2025-11-02T02:30:00+00'::TIMESTAMPTZ;
|
|
----
|
|
2025-11-02 01:30:00-03:30
|
|
|
|
query I
|
|
select * from test2 where date_trunc('hour', d) >= '2025-11-02T02:30:00+00'::TIMESTAMPTZ;
|
|
----
|
|
2025-11-02 00:30:00-02:30
|
|
2025-11-02 01:30:00-03:30
|