should be it
This commit is contained in:
23
external/duckdb/test/sql/function/date/date_add.test
vendored
Normal file
23
external/duckdb/test/sql/function/date/date_add.test
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
# name: test/sql/function/date/date_add.test
|
||||
# description: Test date_add/date_sub
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE);
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES (DATE '1992-01-01')
|
||||
|
||||
# date_add, bigquery
|
||||
query I
|
||||
SELECT DATE_ADD(DATE '2008-12-25', INTERVAL 5 DAY) AS five_days_later;
|
||||
----
|
||||
2008-12-30 00:00:00
|
||||
|
||||
query I
|
||||
SELECT DATE_ADD(TIMESTAMP '2008-12-25 00:00:00', INTERVAL 5 DAY) AS five_days_later;
|
||||
----
|
||||
2008-12-30 00:00:00
|
||||
201
external/duckdb/test/sql/function/date/date_part_stats.test
vendored
Normal file
201
external/duckdb/test/sql/function/date/date_part_stats.test
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
# name: test/sql/function/date/date_part_stats.test
|
||||
# description: Test date part stats on empty table
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE);
|
||||
|
||||
# test stats propagation from empty table
|
||||
query I
|
||||
SELECT EXTRACT(year FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(month FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(day FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(decade FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(century FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(microseconds FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(milliseconds FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(second FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(minute FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(hour FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(epoch FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(isodow FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(doy FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(quarter FROM d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT YEARWEEK(d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT DAYOFMONTH(d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT WEEKDAY(d) FROM dates;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT WEEKOFYEAR(d) FROM dates;
|
||||
----
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_verification
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES (DATE '1992-01-01'), (DATE '2000-12-31');
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(YEAR FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1992.*2000.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(month FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*12.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(day FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*31.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(decade FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*199.*200.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(century FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*20.*20.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(millennium FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*2.*2.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(microseconds FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*60000000.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(milliseconds FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*60000.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(second FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*60.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(minute FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*60.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(hour FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*24.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(dow FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*6.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(isodow FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*7.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(week FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*54.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(doy FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*366.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(quarter FROM d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*4.*
|
||||
|
||||
query I
|
||||
SELECT stats(YEARWEEK(d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*199201.*200052.*
|
||||
|
||||
query I
|
||||
SELECT stats(DAYOFMONTH(d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*31.*
|
||||
|
||||
query I
|
||||
SELECT stats(WEEKDAY(d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*0.*6.*
|
||||
|
||||
query I
|
||||
SELECT stats(WEEKOFYEAR(d)) FROM dates LIMIT 1;
|
||||
----
|
||||
<REGEX>:.*1.*54.*
|
||||
|
||||
28
external/duckdb/test/sql/function/date/date_trunc_4202.test
vendored
Normal file
28
external/duckdb/test/sql/function/date/date_trunc_4202.test
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# name: test/sql/function/date/date_trunc_4202.test
|
||||
# description: Issue #4202: Suspect behavior when comparing dates and timestamps
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
create table t1 (date timestamp);
|
||||
|
||||
statement ok
|
||||
insert into t1 values ('2016-12-16T00:00:00.000Z');
|
||||
|
||||
statement ok
|
||||
insert into t1 values ('2020-02-17T23:59:59.998Z');
|
||||
|
||||
statement ok
|
||||
insert into t1 values ('2020-02-17T23:59:59.999Z');
|
||||
|
||||
statement ok
|
||||
insert into t1 values ('2020-02-18T00:00:00.000Z');
|
||||
|
||||
query I
|
||||
select * from t1 WHERE (date_trunc('DAY', T1.date) < ('2020-02-17T23:59:59.999Z'::timestamp)) ORDER BY 1;
|
||||
----
|
||||
2016-12-16 00:00:00
|
||||
2020-02-17 23:59:59.998
|
||||
2020-02-17 23:59:59.999
|
||||
18
external/duckdb/test/sql/function/date/date_trunc_stats.test
vendored
Normal file
18
external/duckdb/test/sql/function/date/date_trunc_stats.test
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# name: test/sql/function/date/date_trunc_stats.test
|
||||
# description: Test date part stats on empty table
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE table T1(A0 TIMESTAMP)
|
||||
|
||||
statement ok
|
||||
SELECT date_trunc('DAY', A0) FROM T1
|
||||
|
||||
# Statistics typing for DATE => TIMESTAMP
|
||||
statement error
|
||||
SELECT datetrunc('milliseconds', DATE '-2005205-7-28');
|
||||
----
|
||||
<REGEX>:.*Conversion Error.*not in timestamp range.*
|
||||
634
external/duckdb/test/sql/function/date/test_date_part.test
vendored
Normal file
634
external/duckdb/test/sql/function/date/test_date_part.test
vendored
Normal file
@@ -0,0 +1,634 @@
|
||||
# name: test/sql/function/date/test_date_part.test
|
||||
# description: DATE_PART test
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES
|
||||
('1992-01-01', 'year'),
|
||||
('1992-03-03', 'month'),
|
||||
('1992-05-05', 'day'),
|
||||
('2022-01-01', 'isoyear'),
|
||||
('044-03-15 (BC)', 'millennium'),
|
||||
('infinity', 'century'),
|
||||
('-infinity', 'decade'),
|
||||
(NULL, 'weekday'),
|
||||
;
|
||||
|
||||
statement ok
|
||||
CREATE TABLE specifiers (specifier VARCHAR);
|
||||
|
||||
foreach specifier era millennium century decade year quarter month day week weekday isodow dayofyear isoyear yearweek
|
||||
|
||||
statement ok
|
||||
INSERT INTO specifiers VALUES ('${partcode}');
|
||||
|
||||
endloop
|
||||
|
||||
# test date_part with different combinations of constant/non-constant columns
|
||||
query I
|
||||
SELECT date_part(NULL::VARCHAR, NULL::TIMESTAMP) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, NULL::TIMESTAMP) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# dates
|
||||
query I
|
||||
SELECT date_part(NULL, d) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, DATE '1992-01-01') FROM dates;
|
||||
----
|
||||
1992
|
||||
1
|
||||
1
|
||||
1992
|
||||
2
|
||||
20
|
||||
199
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT date_part('year', d) FROM dates;
|
||||
----
|
||||
1992
|
||||
1992
|
||||
1992
|
||||
2022
|
||||
-43
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('isoyear', d) FROM dates;
|
||||
----
|
||||
1992
|
||||
1992
|
||||
1992
|
||||
2021
|
||||
-43
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, d) FROM dates;
|
||||
----
|
||||
1992
|
||||
3
|
||||
5
|
||||
2021
|
||||
-1
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('era', d) FROM dates;
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('julian', d) FROM dates;
|
||||
----
|
||||
2448623
|
||||
2448685
|
||||
2448748
|
||||
2459581
|
||||
1705428
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
statement error
|
||||
SELECT date_part('timezone', d) FROM dates;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT date_part('timezone_hour', d) FROM dates;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT date_part('timezone_minute', d) FROM dates;
|
||||
----
|
||||
|
||||
# timestamps
|
||||
query I
|
||||
SELECT date_part(NULL, d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, TIMESTAMP '1992-01-01') FROM dates;
|
||||
----
|
||||
1992
|
||||
1
|
||||
1
|
||||
1992
|
||||
2
|
||||
20
|
||||
199
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT date_part('year', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
1992
|
||||
1992
|
||||
1992
|
||||
2022
|
||||
-43
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('isoyear', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
1992
|
||||
1992
|
||||
1992
|
||||
2021
|
||||
-43
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
1992
|
||||
3
|
||||
5
|
||||
2021
|
||||
-1
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('era', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('timezone', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('timezone_hour', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part('timezone_minute', d::TIMESTAMP) FROM dates;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# Cache upper bound
|
||||
query I
|
||||
select date_part('year', dt::DATE) * 10,
|
||||
from generate_series('2050-01-01'::date,'2051-12-31'::date,interval 1 day) t(dt)
|
||||
where dt = '2050-12-31';
|
||||
----
|
||||
20500
|
||||
|
||||
#
|
||||
# Two-argument timezone
|
||||
#
|
||||
|
||||
# Normalise to +00:00, add interval, then set offset
|
||||
query I
|
||||
select timezone(interval '4 minute', '12:15:37.123456-08'::TIMETZ);
|
||||
----
|
||||
20:19:37.123456+00:04
|
||||
|
||||
# last_day
|
||||
query TTT
|
||||
SELECT LAST_DAY(DATE '1900-02-12'), LAST_DAY(DATE '1992-02-12'), LAST_DAY(DATE '2000-02-12');
|
||||
----
|
||||
1900-02-28 1992-02-29 2000-02-29
|
||||
|
||||
query T
|
||||
SELECT LAST_DAY(d) FROM dates;
|
||||
----
|
||||
1992-01-31
|
||||
1992-03-31
|
||||
1992-05-31
|
||||
2022-01-31
|
||||
0044-03-31 (BC)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT LAST_DAY(d::timestamp) FROM dates;
|
||||
----
|
||||
1992-01-31
|
||||
1992-03-31
|
||||
1992-05-31
|
||||
2022-01-31
|
||||
0044-03-31 (BC)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# monthname
|
||||
query T
|
||||
SELECT MONTHNAME(d) FROM dates;
|
||||
----
|
||||
January
|
||||
March
|
||||
May
|
||||
January
|
||||
March
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# dayname
|
||||
query T
|
||||
SELECT DAYNAME(d) FROM dates;
|
||||
----
|
||||
Wednesday
|
||||
Tuesday
|
||||
Tuesday
|
||||
Saturday
|
||||
Friday
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# yearweek
|
||||
query I
|
||||
SELECT YEARWEEK(d) FROM dates;
|
||||
----
|
||||
199201
|
||||
199210
|
||||
199219
|
||||
202152
|
||||
-4311
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# aliases
|
||||
query I
|
||||
SELECT DAYOFMONTH(d) FROM dates;
|
||||
----
|
||||
1
|
||||
3
|
||||
5
|
||||
1
|
||||
15
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT WEEKDAY(d) FROM dates;
|
||||
----
|
||||
3
|
||||
2
|
||||
2
|
||||
6
|
||||
5
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT WEEKOFYEAR(d) FROM dates;
|
||||
----
|
||||
1
|
||||
10
|
||||
19
|
||||
52
|
||||
11
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT JULIAN(d) FROM dates;
|
||||
----
|
||||
2448623
|
||||
2448685
|
||||
2448748
|
||||
2459581
|
||||
1705428
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query IIIIIIIIIIII
|
||||
select
|
||||
date_part('quarter', DATE '1992-01-20'),
|
||||
date_part('quarter', DATE '1992-02-20'),
|
||||
date_part('quarter', DATE '1992-03-20'),
|
||||
date_part('quarter', DATE '1992-04-20'),
|
||||
date_part('quarter', DATE '1992-05-20'),
|
||||
date_part('quarter', DATE '1992-06-20'),
|
||||
date_part('quarter', DATE '1992-07-20'),
|
||||
date_part('quarter', DATE '1992-08-20'),
|
||||
date_part('quarter', DATE '1992-09-20'),
|
||||
date_part('quarter', DATE '1992-10-20'),
|
||||
date_part('quarter', DATE '1992-11-20'),
|
||||
date_part('quarter', DATE '1992-12-20')
|
||||
----
|
||||
1 1 1 2 2 2 3 3 3 4 4 4
|
||||
|
||||
# Correctness: Compare date_part values with scalar values
|
||||
foreach partcode era millennium century decade year quarter month day week weekday isodow dayofyear isoyear yearweek julian
|
||||
|
||||
query III
|
||||
SELECT d, DATE_PART('${partcode}', d) AS p, ${partcode}(d) AS f
|
||||
FROM dates
|
||||
WHERE p IS DISTINCT FROM f;
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
# Function-only parts
|
||||
query II
|
||||
SELECT d, epoch_ns(d)
|
||||
FROM dates
|
||||
WHERE d != '0044-03-15 (BC)' OR d IS NULL
|
||||
ORDER BY ALL;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity NULL
|
||||
1992-01-01 694224000000000000
|
||||
1992-03-03 699580800000000000
|
||||
1992-05-05 705024000000000000
|
||||
2022-01-01 1640995200000000000
|
||||
infinity NULL
|
||||
|
||||
query II
|
||||
SELECT d, epoch_us(d) FROM dates ORDER BY ALL;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity NULL
|
||||
0044-03-15 (BC) -63517824000000000
|
||||
1992-01-01 694224000000000
|
||||
1992-03-03 699580800000000
|
||||
1992-05-05 705024000000000
|
||||
2022-01-01 1640995200000000
|
||||
infinity NULL
|
||||
|
||||
query II
|
||||
SELECT d, epoch_ms(d) FROM dates ORDER BY ALL;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity NULL
|
||||
0044-03-15 (BC) -63517824000000
|
||||
1992-01-01 694224000000
|
||||
1992-03-03 699580800000
|
||||
1992-05-05 705024000000
|
||||
2022-01-01 1640995200000
|
||||
infinity NULL
|
||||
|
||||
query II
|
||||
SELECT d, nanosecond(d) FROM dates ORDER BY ALL;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity NULL
|
||||
0044-03-15 (BC) 0
|
||||
1992-01-01 0
|
||||
1992-03-03 0
|
||||
1992-05-05 0
|
||||
2022-01-01 0
|
||||
infinity NULL
|
||||
|
||||
#
|
||||
# Structs
|
||||
#
|
||||
|
||||
# Correctness: Compare struct values with scalar values
|
||||
foreach partcode era millennium century decade year quarter month day week weekday isodow doy isoyear yearweek
|
||||
|
||||
query III
|
||||
SELECT d, DATE_PART('${partcode}', d) AS p, DATE_PART(['${partcode}'], d) AS st
|
||||
FROM dates
|
||||
WHERE p IS DISTINCT FROM st['${partcode}'];
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
# Date parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['year', 'month', 'day', 'epoch'], d) AS parts
|
||||
FROM dates
|
||||
ORDER BY 1;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity {'year': NULL, 'month': NULL, 'day': NULL, 'epoch': NULL}
|
||||
0044-03-15 (BC) {'year': -43, 'month': 3, 'day': 15, 'epoch': -63517824000.0}
|
||||
1992-01-01 {'year': 1992, 'month': 1, 'day': 1, 'epoch': 694224000.0}
|
||||
1992-03-03 {'year': 1992, 'month': 3, 'day': 3, 'epoch': 699580800.0}
|
||||
1992-05-05 {'year': 1992, 'month': 5, 'day': 5, 'epoch': 705024000.0}
|
||||
2022-01-01 {'year': 2022, 'month': 1, 'day': 1, 'epoch': 1640995200.0}
|
||||
infinity {'year': NULL, 'month': NULL, 'day': NULL, 'epoch': NULL}
|
||||
|
||||
# Year parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['era', 'millennium', 'century', 'decade', 'quarter'], d) AS parts
|
||||
FROM dates
|
||||
ORDER BY 1;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity {'era': NULL, 'millennium': NULL, 'century': NULL, 'decade': NULL, 'quarter': NULL}
|
||||
0044-03-15 (BC) {'era': 0, 'millennium': -1, 'century': -1, 'decade': -4, 'quarter': 1}
|
||||
1992-01-01 {'era': 1, 'millennium': 2, 'century': 20, 'decade': 199, 'quarter': 1}
|
||||
1992-03-03 {'era': 1, 'millennium': 2, 'century': 20, 'decade': 199, 'quarter': 1}
|
||||
1992-05-05 {'era': 1, 'millennium': 2, 'century': 20, 'decade': 199, 'quarter': 2}
|
||||
2022-01-01 {'era': 1, 'millennium': 3, 'century': 21, 'decade': 202, 'quarter': 1}
|
||||
infinity {'era': NULL, 'millennium': NULL, 'century': NULL, 'decade': NULL, 'quarter': NULL}
|
||||
|
||||
# Day parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['weekday', 'isodow', 'doy', 'julian'], d) AS parts
|
||||
FROM dates
|
||||
ORDER BY 1;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity {'weekday': NULL, 'isodow': NULL, 'doy': NULL, 'julian': NULL}
|
||||
0044-03-15 (BC) {'weekday': 5, 'isodow': 5, 'doy': 74, 'julian': 1705428.0}
|
||||
1992-01-01 {'weekday': 3, 'isodow': 3, 'doy': 1, 'julian': 2448623.0}
|
||||
1992-03-03 {'weekday': 2, 'isodow': 2, 'doy': 63, 'julian': 2448685.0}
|
||||
1992-05-05 {'weekday': 2, 'isodow': 2, 'doy': 126, 'julian': 2448748.0}
|
||||
2022-01-01 {'weekday': 6, 'isodow': 6, 'doy': 1, 'julian': 2459581.0}
|
||||
infinity {'weekday': NULL, 'isodow': NULL, 'doy': NULL, 'julian': NULL}
|
||||
|
||||
query I
|
||||
SELECT DATE_PART(['weekday', 'isodow', 'doy', 'julian'], '2022-01-01'::DATE) AS parts
|
||||
----
|
||||
{'weekday': 6, 'isodow': 6, 'doy': 1, 'julian': 2459581.0}
|
||||
|
||||
# ISO parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['isoyear', 'week', 'yearweek'], d) AS parts
|
||||
FROM dates
|
||||
ORDER BY 1;
|
||||
----
|
||||
NULL NULL
|
||||
-infinity {'isoyear': NULL, 'week': NULL, 'yearweek': NULL}
|
||||
0044-03-15 (BC) {'isoyear': -43, 'week': 11, 'yearweek': -4311}
|
||||
1992-01-01 {'isoyear': 1992, 'week': 1, 'yearweek': 199201}
|
||||
1992-03-03 {'isoyear': 1992, 'week': 10, 'yearweek': 199210}
|
||||
1992-05-05 {'isoyear': 1992, 'week': 19, 'yearweek': 199219}
|
||||
2022-01-01 {'isoyear': 2021, 'week': 52, 'yearweek': 202152}
|
||||
infinity {'isoyear': NULL, 'week': NULL, 'yearweek': NULL}
|
||||
|
||||
# Selective filtering (Issue #5342)
|
||||
query II
|
||||
SELECT d, DATE_PART(['year', 'month', 'day'], d) AS parts
|
||||
FROM dates
|
||||
WHERE s = 'day'
|
||||
ORDER BY 1;
|
||||
----
|
||||
1992-05-05 {'year': 1992, 'month': 5, 'day': 5}
|
||||
|
||||
# Invalid parts
|
||||
|
||||
foreach datepart hour minute second millisecond microsecond timezone timezone_hour timezone_minute
|
||||
|
||||
statement error
|
||||
SELECT d, DATE_PART(['${datepart}'], d) AS parts
|
||||
FROM dates
|
||||
ORDER BY 1;
|
||||
----
|
||||
not recognized
|
||||
|
||||
endloop
|
||||
|
||||
statement error
|
||||
SELECT DATE_PART(['hour', 'minute'], '2023-09-17'::DATE) AS parts
|
||||
----
|
||||
not recognized
|
||||
|
||||
#
|
||||
# Infinities
|
||||
#
|
||||
# PG returns numeric ±Infinity, but we have to return an integer,
|
||||
# so instead we return NULL, which is what PG used to do.
|
||||
|
||||
foreach datatype DATE TIMESTAMP
|
||||
|
||||
foreach special infinity -infinity
|
||||
|
||||
# Binary function
|
||||
query I
|
||||
SELECT DATE_PART(specifier, '${special}'::${datatype}) AS result
|
||||
FROM specifiers
|
||||
WHERE result IS NOT NULL
|
||||
----
|
||||
|
||||
foreach unary year month day decade century millennium quarter dayofweek isodow dayofyear week isoyear era timezone timezone_hour timezone_minute epoch microsecond millisecond second minute hour yearweek dayofmonth weekday weekofyear last_day monthname dayname
|
||||
|
||||
# Unary functions
|
||||
query I
|
||||
SELECT ${unary}('${special}'::${datatype});
|
||||
----
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
# Struct entries should be NULL
|
||||
query I
|
||||
SELECT DATE_PART(['year', 'month', 'day', 'epoch'], '${special}'::${datatype}) AS parts
|
||||
----
|
||||
{'year': NULL, 'month': NULL, 'day': NULL, 'epoch': NULL}
|
||||
|
||||
endloop
|
||||
|
||||
endloop
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::VARCHAR part
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT date_part(part, TIMESTAMP '2019-01-06 04:03:02')
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
320
external/duckdb/test/sql/function/date/test_date_trunc.test
vendored
Normal file
320
external/duckdb/test/sql/function/date/test_date_trunc.test
vendored
Normal file
@@ -0,0 +1,320 @@
|
||||
# name: test/sql/function/date/test_date_trunc.test
|
||||
# description: Test date truncate functionality
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE timestamps(d TIMESTAMP, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES
|
||||
('1992-12-02', 'year'),
|
||||
('1993-03-03', 'month'),
|
||||
('1994-05-05', 'day'),
|
||||
('2022-01-01', 'isoyear')
|
||||
;
|
||||
|
||||
statement ok
|
||||
INSERT INTO timestamps VALUES
|
||||
('-infinity', 'year'),
|
||||
('1992-02-02 02:02:03', 'millennium'),
|
||||
('1992-02-02 02:02:03', 'century'),
|
||||
('1992-02-02 02:02:03', 'decade'),
|
||||
('1992-02-02 02:02:03', 'year'),
|
||||
('1992-02-02 02:02:03', 'quarter'),
|
||||
('1992-02-02 02:02:03', 'month'),
|
||||
('1992-02-02 02:02:03', 'week'),
|
||||
('1992-02-02 02:02:03', 'day'),
|
||||
('1992-02-02 02:02:03', 'hour'),
|
||||
('1992-02-02 02:02:03', 'minute'),
|
||||
('1992-02-02 02:02:03', 'second'),
|
||||
('1992-02-02 02:02:03', 'milliseconds'),
|
||||
('1992-02-02 02:02:03', 'microseconds'),
|
||||
('infinity', 'month'),
|
||||
;
|
||||
|
||||
# test date_trunc with different combinations of constant/non-constant columns on both dates and timestamps
|
||||
query T
|
||||
SELECT date_trunc(NULL::VARCHAR, NULL::TIMESTAMP) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT date_trunc(s, NULL::TIMESTAMP) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT date_trunc(NULL, d) FROM dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT date_trunc(NULL::VARCHAR, NULL::TIMESTAMP) FROM timestamps LIMIT 3;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT date_trunc(s, NULL::TIMESTAMP) FROM timestamps LIMIT 3;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT date_trunc(NULL, d) FROM timestamps LIMIT 3;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# dates should be cast to timestamp
|
||||
query T
|
||||
SELECT date_trunc('month', DATE '1992-02-02') FROM dates LIMIT 1;
|
||||
----
|
||||
1992-02-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc(s, d) FROM dates;
|
||||
----
|
||||
1992-01-01 00:00:00
|
||||
1993-03-01 00:00:00
|
||||
1994-05-05 00:00:00
|
||||
2021-01-04 00:00:00
|
||||
|
||||
# Issue #4388: Verify DATE results for all timestamp types
|
||||
foreach temporal TIMESTAMP TIMESTAMP_MS TIMESTAMP_NS TIMESTAMP_S
|
||||
|
||||
foreach datepart day doy dow isodow julian
|
||||
|
||||
query I
|
||||
select date_trunc('${datepart}', '2022-08-15 07:52:55'::${temporal});
|
||||
----
|
||||
2022-08-15
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
select date_trunc('hour', '2022-08-15 07:52:55'::${temporal});
|
||||
----
|
||||
2022-08-15 07:00:00
|
||||
|
||||
endloop
|
||||
|
||||
# Timestamps should return timestamp type
|
||||
query T
|
||||
SELECT date_trunc('minute', TIMESTAMP '1992-02-02 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
1992-02-02 04:03:00
|
||||
|
||||
# Test all truncate operators on timestamps
|
||||
query T
|
||||
SELECT date_trunc(s, d) FROM timestamps;
|
||||
----
|
||||
-infinity
|
||||
1000-01-01 00:00:00
|
||||
1900-01-01 00:00:00
|
||||
1990-01-01 00:00:00
|
||||
1992-01-01 00:00:00
|
||||
1992-01-01 00:00:00
|
||||
1992-02-01 00:00:00
|
||||
1992-01-27 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 02:00:00
|
||||
1992-02-02 02:02:00
|
||||
1992-02-02 02:02:03
|
||||
1992-02-02 02:02:03
|
||||
1992-02-02 02:02:03
|
||||
infinity
|
||||
|
||||
# Redo previous test but with casting to date first
|
||||
query T
|
||||
SELECT date_trunc(s, CAST(d as DATE)) FROM timestamps;
|
||||
----
|
||||
-infinity
|
||||
1000-01-01 00:00:00
|
||||
1900-01-01 00:00:00
|
||||
1990-01-01 00:00:00
|
||||
1992-01-01 00:00:00
|
||||
1992-01-01 00:00:00
|
||||
1992-02-01 00:00:00
|
||||
1992-01-27 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
1992-02-02 00:00:00
|
||||
infinity
|
||||
|
||||
# Test week operator special cases
|
||||
query T
|
||||
SELECT date_trunc('week', TIMESTAMP '2020-01-01 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-12-30
|
||||
|
||||
query T
|
||||
SELECT date_trunc('week', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2018-12-31
|
||||
|
||||
query T
|
||||
SELECT date_trunc('yearweek', TIMESTAMP '2020-01-01 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-12-30
|
||||
|
||||
query T
|
||||
SELECT date_trunc('yearweek', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2018-12-31
|
||||
|
||||
# Test quarter operator more thoroughly
|
||||
query T
|
||||
SELECT date_trunc('quarter', TIMESTAMP '2020-12-02 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2020-10-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('quarter', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('millennium', TIMESTAMP '1996-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
1000-01-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('century', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2000-01-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('decade', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2010-01-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('year', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-01
|
||||
|
||||
query T
|
||||
SELECT date_trunc('day', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-06
|
||||
|
||||
query T
|
||||
SELECT date_trunc('hour', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-06 04:00:00
|
||||
|
||||
query T
|
||||
SELECT date_trunc('milliseconds', TIMESTAMP '2019-01-06 04:03:02.123456') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-06 04:03:02.123
|
||||
|
||||
query T
|
||||
SELECT date_trunc('microseconds', TIMESTAMP '2019-01-06 04:03:02.123456');
|
||||
----
|
||||
2019-01-06 04:03:02.123456
|
||||
|
||||
# Synonym for second
|
||||
query T
|
||||
SELECT date_trunc('epoch', TIMESTAMP '2019-01-06 04:03:02.5') FROM timestamps LIMIT 1;
|
||||
----
|
||||
2019-01-06 04:03:02
|
||||
|
||||
query II
|
||||
SELECT d::DATE, DATE_TRUNC('isoyear', d)::DATE
|
||||
FROM generate_series('2000-01-01'::TIMESTAMP, '2023-01-01'::TIMESTAMP, INTERVAL 1 YEAR) tbl(d);
|
||||
----
|
||||
2000-01-01 1999-01-04
|
||||
2001-01-01 2001-01-01
|
||||
2002-01-01 2001-12-31
|
||||
2003-01-01 2002-12-30
|
||||
2004-01-01 2003-12-29
|
||||
2005-01-01 2003-12-29
|
||||
2006-01-01 2005-01-03
|
||||
2007-01-01 2007-01-01
|
||||
2008-01-01 2007-12-31
|
||||
2009-01-01 2008-12-29
|
||||
2010-01-01 2008-12-29
|
||||
2011-01-01 2010-01-04
|
||||
2012-01-01 2011-01-03
|
||||
2013-01-01 2012-12-31
|
||||
2014-01-01 2013-12-30
|
||||
2015-01-01 2014-12-29
|
||||
2016-01-01 2014-12-29
|
||||
2017-01-01 2016-01-04
|
||||
2018-01-01 2018-01-01
|
||||
2019-01-01 2018-12-31
|
||||
2020-01-01 2019-12-30
|
||||
2021-01-01 2019-12-30
|
||||
2022-01-01 2021-01-04
|
||||
2023-01-01 2022-01-03
|
||||
|
||||
# Unknown specifier should fail
|
||||
statement error
|
||||
SELECT date_trunc('duck', TIMESTAMP '2019-01-06 04:03:02') FROM timestamps LIMIT 1;
|
||||
----
|
||||
|
||||
# Statistics should propagate
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_verification
|
||||
|
||||
query I
|
||||
SELECT stats(date_trunc('year', d)) FROM dates LIMIT 1;
|
||||
----
|
||||
[Min: 1992-01-01, Max: 2022-01-01][Has Null: false, Has No Null: true]
|
||||
|
||||
query I
|
||||
SELECT stats(date_trunc('quarter', d)) FROM dates LIMIT 1;
|
||||
----
|
||||
[Min: 1992-10-01, Max: 2022-01-01][Has Null: false, Has No Null: true]
|
||||
|
||||
query I
|
||||
SELECT stats(date_trunc('month', d)) FROM dates LIMIT 1;
|
||||
----
|
||||
[Min: 1992-12-01, Max: 2022-01-01][Has Null: false, Has No Null: true]
|
||||
|
||||
query I
|
||||
SELECT stats(date_trunc('day', d)) FROM dates LIMIT 1;
|
||||
----
|
||||
[Min: 1992-12-02, Max: 2022-01-01][Has Null: false, Has No Null: true]
|
||||
|
||||
foreach daypart millennium century decade year quarter month week day
|
||||
|
||||
query I
|
||||
SELECT stats(date_trunc('${daypart}', d)) FROM timestamps LIMIT 1;
|
||||
----
|
||||
[Min: -infinity, Max: infinity][Has Null: false, Has No Null: true]
|
||||
|
||||
endloop
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::VARCHAR part
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT date_trunc(part, TIMESTAMP '2019-01-06 04:03:02')
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
135
external/duckdb/test/sql/function/date/test_extract.test
vendored
Normal file
135
external/duckdb/test/sql/function/date/test_extract.test
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
# name: test/sql/function/date/test_extract.test
|
||||
# description: Extract function
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(i DATE)
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES ('1993-08-14'), (NULL)
|
||||
|
||||
# extract various parts of the date
|
||||
# year
|
||||
query I
|
||||
SELECT EXTRACT(year FROM i) FROM dates
|
||||
----
|
||||
1993
|
||||
NULL
|
||||
|
||||
# month
|
||||
query I
|
||||
SELECT EXTRACT(month FROM i) FROM dates
|
||||
----
|
||||
8
|
||||
NULL
|
||||
|
||||
# quarter
|
||||
query I
|
||||
SELECT EXTRACT(quarter FROM i) FROM dates
|
||||
----
|
||||
3
|
||||
NULL
|
||||
|
||||
# day
|
||||
query I
|
||||
SELECT EXTRACT(day FROM i) FROM dates
|
||||
----
|
||||
14
|
||||
NULL
|
||||
|
||||
# decade
|
||||
query I
|
||||
SELECT EXTRACT(decade FROM i) FROM dates
|
||||
----
|
||||
199
|
||||
NULL
|
||||
|
||||
# century
|
||||
query I
|
||||
SELECT EXTRACT(century FROM i) FROM dates
|
||||
----
|
||||
20
|
||||
NULL
|
||||
|
||||
# day of the week (Sunday = 0, Saturday = 6)
|
||||
query I
|
||||
SELECT EXTRACT(DOW FROM i) FROM dates
|
||||
----
|
||||
6
|
||||
NULL
|
||||
|
||||
# day of the year (1 - 365/366)
|
||||
query I
|
||||
SELECT EXTRACT(DOY FROM i) FROM dates
|
||||
----
|
||||
226
|
||||
NULL
|
||||
|
||||
# epoch
|
||||
query I
|
||||
SELECT EXTRACT(epoch FROM i) FROM dates
|
||||
----
|
||||
745286400
|
||||
NULL
|
||||
|
||||
# isodow (Monday = 1, Sunday = 7)
|
||||
query I
|
||||
SELECT EXTRACT(ISODOW FROM i) FROM dates
|
||||
----
|
||||
6
|
||||
NULL
|
||||
|
||||
# week (1-53)
|
||||
query I
|
||||
SELECT EXTRACT(WEEK FROM i) FROM dates
|
||||
----
|
||||
32
|
||||
NULL
|
||||
|
||||
# yearweek (YYYYWW)
|
||||
query I
|
||||
SELECT EXTRACT(YEARWEEK FROM i) FROM dates
|
||||
----
|
||||
199332
|
||||
NULL
|
||||
|
||||
# millennium (change of millennium is January 1, X001)
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM i) FROM dates
|
||||
----
|
||||
2
|
||||
NULL
|
||||
|
||||
# timestamp variants all give 0 for date
|
||||
query I
|
||||
SELECT EXTRACT(second FROM i) FROM dates
|
||||
----
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(minute FROM i) FROM dates
|
||||
----
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(hour FROM i) FROM dates
|
||||
----
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(milliseconds FROM i) FROM dates
|
||||
----
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(microsecond FROM i) FROM dates
|
||||
----
|
||||
0
|
||||
NULL
|
||||
341
external/duckdb/test/sql/function/date/test_extract_edge_cases.test
vendored
Normal file
341
external/duckdb/test/sql/function/date/test_extract_edge_cases.test
vendored
Normal file
@@ -0,0 +1,341 @@
|
||||
# name: test/sql/function/date/test_extract_edge_cases.test
|
||||
# description: Extract function edge cases
|
||||
# group: [date]
|
||||
|
||||
# century changes in the year 1
|
||||
query I
|
||||
SELECT EXTRACT(century FROM cast('2000-10-10' AS DATE));
|
||||
----
|
||||
20
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(century FROM cast('2001-10-10' AS DATE));
|
||||
----
|
||||
21
|
||||
|
||||
# millennium changes in the year 1
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM cast('2000-10-10' AS DATE));
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM cast('2001-10-10' AS DATE));
|
||||
----
|
||||
3
|
||||
|
||||
# check DOW
|
||||
# start from the epoch and go up/down, every time the day should go up/down
|
||||
# one as well
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 0);
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 0);
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 1);
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 1);
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 2);
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 2);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 3);
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 3);
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 4);
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 4);
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 5);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 5);
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) + 6);
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1970-01-01' AS DATE) - 6);
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(dow FROM cast('1793-05-26' AS DATE));
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(isodow FROM cast('1793-05-26' AS DATE));
|
||||
----
|
||||
7
|
||||
|
||||
# week numbers are weird
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2005-01-01' AS DATE));
|
||||
----
|
||||
53
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2006-01-01' AS DATE));
|
||||
----
|
||||
52
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE));
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2008-01-01' AS DATE));
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2009-01-01' AS DATE));
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2010-01-01' AS DATE));
|
||||
----
|
||||
53
|
||||
|
||||
# every 7 days the week number should go up by 7
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 0);
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 7);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 14);
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 21);
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 28);
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 35);
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 42);
|
||||
----
|
||||
7
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 49);
|
||||
----
|
||||
8
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 56);
|
||||
----
|
||||
9
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 63);
|
||||
----
|
||||
10
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 70);
|
||||
----
|
||||
11
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 77);
|
||||
----
|
||||
12
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 84);
|
||||
----
|
||||
13
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 91);
|
||||
----
|
||||
14
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 98);
|
||||
----
|
||||
15
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 105);
|
||||
----
|
||||
16
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 112);
|
||||
----
|
||||
17
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 119);
|
||||
----
|
||||
18
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 126);
|
||||
----
|
||||
19
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 133);
|
||||
----
|
||||
20
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 140);
|
||||
----
|
||||
21
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 147);
|
||||
----
|
||||
22
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 154);
|
||||
----
|
||||
23
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 161);
|
||||
----
|
||||
24
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 168);
|
||||
----
|
||||
25
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 175);
|
||||
----
|
||||
26
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 182);
|
||||
----
|
||||
27
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 189);
|
||||
----
|
||||
28
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 196);
|
||||
----
|
||||
29
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 203);
|
||||
----
|
||||
30
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 210);
|
||||
----
|
||||
31
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 217);
|
||||
----
|
||||
32
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 224);
|
||||
----
|
||||
33
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 231);
|
||||
----
|
||||
34
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 238);
|
||||
----
|
||||
35
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 245);
|
||||
----
|
||||
36
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 252);
|
||||
----
|
||||
37
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 259);
|
||||
----
|
||||
38
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 266);
|
||||
----
|
||||
39
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(week FROM cast('2007-01-01' AS DATE) + 273);
|
||||
----
|
||||
40
|
||||
|
||||
746
external/duckdb/test/sql/function/date/test_extract_month.test
vendored
Normal file
746
external/duckdb/test/sql/function/date/test_extract_month.test
vendored
Normal file
@@ -0,0 +1,746 @@
|
||||
# name: test/sql/function/date/test_extract_month.test
|
||||
# description: Extract month function
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
query II
|
||||
select date '1992-01-01' + interval (i) days, month(date '1992-01-01' + interval (i) days) from range(0, 366) tbl(i);
|
||||
----
|
||||
1992-01-01 00:00:00 1
|
||||
1992-01-02 00:00:00 1
|
||||
1992-01-03 00:00:00 1
|
||||
1992-01-04 00:00:00 1
|
||||
1992-01-05 00:00:00 1
|
||||
1992-01-06 00:00:00 1
|
||||
1992-01-07 00:00:00 1
|
||||
1992-01-08 00:00:00 1
|
||||
1992-01-09 00:00:00 1
|
||||
1992-01-10 00:00:00 1
|
||||
1992-01-11 00:00:00 1
|
||||
1992-01-12 00:00:00 1
|
||||
1992-01-13 00:00:00 1
|
||||
1992-01-14 00:00:00 1
|
||||
1992-01-15 00:00:00 1
|
||||
1992-01-16 00:00:00 1
|
||||
1992-01-17 00:00:00 1
|
||||
1992-01-18 00:00:00 1
|
||||
1992-01-19 00:00:00 1
|
||||
1992-01-20 00:00:00 1
|
||||
1992-01-21 00:00:00 1
|
||||
1992-01-22 00:00:00 1
|
||||
1992-01-23 00:00:00 1
|
||||
1992-01-24 00:00:00 1
|
||||
1992-01-25 00:00:00 1
|
||||
1992-01-26 00:00:00 1
|
||||
1992-01-27 00:00:00 1
|
||||
1992-01-28 00:00:00 1
|
||||
1992-01-29 00:00:00 1
|
||||
1992-01-30 00:00:00 1
|
||||
1992-01-31 00:00:00 1
|
||||
1992-02-01 00:00:00 2
|
||||
1992-02-02 00:00:00 2
|
||||
1992-02-03 00:00:00 2
|
||||
1992-02-04 00:00:00 2
|
||||
1992-02-05 00:00:00 2
|
||||
1992-02-06 00:00:00 2
|
||||
1992-02-07 00:00:00 2
|
||||
1992-02-08 00:00:00 2
|
||||
1992-02-09 00:00:00 2
|
||||
1992-02-10 00:00:00 2
|
||||
1992-02-11 00:00:00 2
|
||||
1992-02-12 00:00:00 2
|
||||
1992-02-13 00:00:00 2
|
||||
1992-02-14 00:00:00 2
|
||||
1992-02-15 00:00:00 2
|
||||
1992-02-16 00:00:00 2
|
||||
1992-02-17 00:00:00 2
|
||||
1992-02-18 00:00:00 2
|
||||
1992-02-19 00:00:00 2
|
||||
1992-02-20 00:00:00 2
|
||||
1992-02-21 00:00:00 2
|
||||
1992-02-22 00:00:00 2
|
||||
1992-02-23 00:00:00 2
|
||||
1992-02-24 00:00:00 2
|
||||
1992-02-25 00:00:00 2
|
||||
1992-02-26 00:00:00 2
|
||||
1992-02-27 00:00:00 2
|
||||
1992-02-28 00:00:00 2
|
||||
1992-02-29 00:00:00 2
|
||||
1992-03-01 00:00:00 3
|
||||
1992-03-02 00:00:00 3
|
||||
1992-03-03 00:00:00 3
|
||||
1992-03-04 00:00:00 3
|
||||
1992-03-05 00:00:00 3
|
||||
1992-03-06 00:00:00 3
|
||||
1992-03-07 00:00:00 3
|
||||
1992-03-08 00:00:00 3
|
||||
1992-03-09 00:00:00 3
|
||||
1992-03-10 00:00:00 3
|
||||
1992-03-11 00:00:00 3
|
||||
1992-03-12 00:00:00 3
|
||||
1992-03-13 00:00:00 3
|
||||
1992-03-14 00:00:00 3
|
||||
1992-03-15 00:00:00 3
|
||||
1992-03-16 00:00:00 3
|
||||
1992-03-17 00:00:00 3
|
||||
1992-03-18 00:00:00 3
|
||||
1992-03-19 00:00:00 3
|
||||
1992-03-20 00:00:00 3
|
||||
1992-03-21 00:00:00 3
|
||||
1992-03-22 00:00:00 3
|
||||
1992-03-23 00:00:00 3
|
||||
1992-03-24 00:00:00 3
|
||||
1992-03-25 00:00:00 3
|
||||
1992-03-26 00:00:00 3
|
||||
1992-03-27 00:00:00 3
|
||||
1992-03-28 00:00:00 3
|
||||
1992-03-29 00:00:00 3
|
||||
1992-03-30 00:00:00 3
|
||||
1992-03-31 00:00:00 3
|
||||
1992-04-01 00:00:00 4
|
||||
1992-04-02 00:00:00 4
|
||||
1992-04-03 00:00:00 4
|
||||
1992-04-04 00:00:00 4
|
||||
1992-04-05 00:00:00 4
|
||||
1992-04-06 00:00:00 4
|
||||
1992-04-07 00:00:00 4
|
||||
1992-04-08 00:00:00 4
|
||||
1992-04-09 00:00:00 4
|
||||
1992-04-10 00:00:00 4
|
||||
1992-04-11 00:00:00 4
|
||||
1992-04-12 00:00:00 4
|
||||
1992-04-13 00:00:00 4
|
||||
1992-04-14 00:00:00 4
|
||||
1992-04-15 00:00:00 4
|
||||
1992-04-16 00:00:00 4
|
||||
1992-04-17 00:00:00 4
|
||||
1992-04-18 00:00:00 4
|
||||
1992-04-19 00:00:00 4
|
||||
1992-04-20 00:00:00 4
|
||||
1992-04-21 00:00:00 4
|
||||
1992-04-22 00:00:00 4
|
||||
1992-04-23 00:00:00 4
|
||||
1992-04-24 00:00:00 4
|
||||
1992-04-25 00:00:00 4
|
||||
1992-04-26 00:00:00 4
|
||||
1992-04-27 00:00:00 4
|
||||
1992-04-28 00:00:00 4
|
||||
1992-04-29 00:00:00 4
|
||||
1992-04-30 00:00:00 4
|
||||
1992-05-01 00:00:00 5
|
||||
1992-05-02 00:00:00 5
|
||||
1992-05-03 00:00:00 5
|
||||
1992-05-04 00:00:00 5
|
||||
1992-05-05 00:00:00 5
|
||||
1992-05-06 00:00:00 5
|
||||
1992-05-07 00:00:00 5
|
||||
1992-05-08 00:00:00 5
|
||||
1992-05-09 00:00:00 5
|
||||
1992-05-10 00:00:00 5
|
||||
1992-05-11 00:00:00 5
|
||||
1992-05-12 00:00:00 5
|
||||
1992-05-13 00:00:00 5
|
||||
1992-05-14 00:00:00 5
|
||||
1992-05-15 00:00:00 5
|
||||
1992-05-16 00:00:00 5
|
||||
1992-05-17 00:00:00 5
|
||||
1992-05-18 00:00:00 5
|
||||
1992-05-19 00:00:00 5
|
||||
1992-05-20 00:00:00 5
|
||||
1992-05-21 00:00:00 5
|
||||
1992-05-22 00:00:00 5
|
||||
1992-05-23 00:00:00 5
|
||||
1992-05-24 00:00:00 5
|
||||
1992-05-25 00:00:00 5
|
||||
1992-05-26 00:00:00 5
|
||||
1992-05-27 00:00:00 5
|
||||
1992-05-28 00:00:00 5
|
||||
1992-05-29 00:00:00 5
|
||||
1992-05-30 00:00:00 5
|
||||
1992-05-31 00:00:00 5
|
||||
1992-06-01 00:00:00 6
|
||||
1992-06-02 00:00:00 6
|
||||
1992-06-03 00:00:00 6
|
||||
1992-06-04 00:00:00 6
|
||||
1992-06-05 00:00:00 6
|
||||
1992-06-06 00:00:00 6
|
||||
1992-06-07 00:00:00 6
|
||||
1992-06-08 00:00:00 6
|
||||
1992-06-09 00:00:00 6
|
||||
1992-06-10 00:00:00 6
|
||||
1992-06-11 00:00:00 6
|
||||
1992-06-12 00:00:00 6
|
||||
1992-06-13 00:00:00 6
|
||||
1992-06-14 00:00:00 6
|
||||
1992-06-15 00:00:00 6
|
||||
1992-06-16 00:00:00 6
|
||||
1992-06-17 00:00:00 6
|
||||
1992-06-18 00:00:00 6
|
||||
1992-06-19 00:00:00 6
|
||||
1992-06-20 00:00:00 6
|
||||
1992-06-21 00:00:00 6
|
||||
1992-06-22 00:00:00 6
|
||||
1992-06-23 00:00:00 6
|
||||
1992-06-24 00:00:00 6
|
||||
1992-06-25 00:00:00 6
|
||||
1992-06-26 00:00:00 6
|
||||
1992-06-27 00:00:00 6
|
||||
1992-06-28 00:00:00 6
|
||||
1992-06-29 00:00:00 6
|
||||
1992-06-30 00:00:00 6
|
||||
1992-07-01 00:00:00 7
|
||||
1992-07-02 00:00:00 7
|
||||
1992-07-03 00:00:00 7
|
||||
1992-07-04 00:00:00 7
|
||||
1992-07-05 00:00:00 7
|
||||
1992-07-06 00:00:00 7
|
||||
1992-07-07 00:00:00 7
|
||||
1992-07-08 00:00:00 7
|
||||
1992-07-09 00:00:00 7
|
||||
1992-07-10 00:00:00 7
|
||||
1992-07-11 00:00:00 7
|
||||
1992-07-12 00:00:00 7
|
||||
1992-07-13 00:00:00 7
|
||||
1992-07-14 00:00:00 7
|
||||
1992-07-15 00:00:00 7
|
||||
1992-07-16 00:00:00 7
|
||||
1992-07-17 00:00:00 7
|
||||
1992-07-18 00:00:00 7
|
||||
1992-07-19 00:00:00 7
|
||||
1992-07-20 00:00:00 7
|
||||
1992-07-21 00:00:00 7
|
||||
1992-07-22 00:00:00 7
|
||||
1992-07-23 00:00:00 7
|
||||
1992-07-24 00:00:00 7
|
||||
1992-07-25 00:00:00 7
|
||||
1992-07-26 00:00:00 7
|
||||
1992-07-27 00:00:00 7
|
||||
1992-07-28 00:00:00 7
|
||||
1992-07-29 00:00:00 7
|
||||
1992-07-30 00:00:00 7
|
||||
1992-07-31 00:00:00 7
|
||||
1992-08-01 00:00:00 8
|
||||
1992-08-02 00:00:00 8
|
||||
1992-08-03 00:00:00 8
|
||||
1992-08-04 00:00:00 8
|
||||
1992-08-05 00:00:00 8
|
||||
1992-08-06 00:00:00 8
|
||||
1992-08-07 00:00:00 8
|
||||
1992-08-08 00:00:00 8
|
||||
1992-08-09 00:00:00 8
|
||||
1992-08-10 00:00:00 8
|
||||
1992-08-11 00:00:00 8
|
||||
1992-08-12 00:00:00 8
|
||||
1992-08-13 00:00:00 8
|
||||
1992-08-14 00:00:00 8
|
||||
1992-08-15 00:00:00 8
|
||||
1992-08-16 00:00:00 8
|
||||
1992-08-17 00:00:00 8
|
||||
1992-08-18 00:00:00 8
|
||||
1992-08-19 00:00:00 8
|
||||
1992-08-20 00:00:00 8
|
||||
1992-08-21 00:00:00 8
|
||||
1992-08-22 00:00:00 8
|
||||
1992-08-23 00:00:00 8
|
||||
1992-08-24 00:00:00 8
|
||||
1992-08-25 00:00:00 8
|
||||
1992-08-26 00:00:00 8
|
||||
1992-08-27 00:00:00 8
|
||||
1992-08-28 00:00:00 8
|
||||
1992-08-29 00:00:00 8
|
||||
1992-08-30 00:00:00 8
|
||||
1992-08-31 00:00:00 8
|
||||
1992-09-01 00:00:00 9
|
||||
1992-09-02 00:00:00 9
|
||||
1992-09-03 00:00:00 9
|
||||
1992-09-04 00:00:00 9
|
||||
1992-09-05 00:00:00 9
|
||||
1992-09-06 00:00:00 9
|
||||
1992-09-07 00:00:00 9
|
||||
1992-09-08 00:00:00 9
|
||||
1992-09-09 00:00:00 9
|
||||
1992-09-10 00:00:00 9
|
||||
1992-09-11 00:00:00 9
|
||||
1992-09-12 00:00:00 9
|
||||
1992-09-13 00:00:00 9
|
||||
1992-09-14 00:00:00 9
|
||||
1992-09-15 00:00:00 9
|
||||
1992-09-16 00:00:00 9
|
||||
1992-09-17 00:00:00 9
|
||||
1992-09-18 00:00:00 9
|
||||
1992-09-19 00:00:00 9
|
||||
1992-09-20 00:00:00 9
|
||||
1992-09-21 00:00:00 9
|
||||
1992-09-22 00:00:00 9
|
||||
1992-09-23 00:00:00 9
|
||||
1992-09-24 00:00:00 9
|
||||
1992-09-25 00:00:00 9
|
||||
1992-09-26 00:00:00 9
|
||||
1992-09-27 00:00:00 9
|
||||
1992-09-28 00:00:00 9
|
||||
1992-09-29 00:00:00 9
|
||||
1992-09-30 00:00:00 9
|
||||
1992-10-01 00:00:00 10
|
||||
1992-10-02 00:00:00 10
|
||||
1992-10-03 00:00:00 10
|
||||
1992-10-04 00:00:00 10
|
||||
1992-10-05 00:00:00 10
|
||||
1992-10-06 00:00:00 10
|
||||
1992-10-07 00:00:00 10
|
||||
1992-10-08 00:00:00 10
|
||||
1992-10-09 00:00:00 10
|
||||
1992-10-10 00:00:00 10
|
||||
1992-10-11 00:00:00 10
|
||||
1992-10-12 00:00:00 10
|
||||
1992-10-13 00:00:00 10
|
||||
1992-10-14 00:00:00 10
|
||||
1992-10-15 00:00:00 10
|
||||
1992-10-16 00:00:00 10
|
||||
1992-10-17 00:00:00 10
|
||||
1992-10-18 00:00:00 10
|
||||
1992-10-19 00:00:00 10
|
||||
1992-10-20 00:00:00 10
|
||||
1992-10-21 00:00:00 10
|
||||
1992-10-22 00:00:00 10
|
||||
1992-10-23 00:00:00 10
|
||||
1992-10-24 00:00:00 10
|
||||
1992-10-25 00:00:00 10
|
||||
1992-10-26 00:00:00 10
|
||||
1992-10-27 00:00:00 10
|
||||
1992-10-28 00:00:00 10
|
||||
1992-10-29 00:00:00 10
|
||||
1992-10-30 00:00:00 10
|
||||
1992-10-31 00:00:00 10
|
||||
1992-11-01 00:00:00 11
|
||||
1992-11-02 00:00:00 11
|
||||
1992-11-03 00:00:00 11
|
||||
1992-11-04 00:00:00 11
|
||||
1992-11-05 00:00:00 11
|
||||
1992-11-06 00:00:00 11
|
||||
1992-11-07 00:00:00 11
|
||||
1992-11-08 00:00:00 11
|
||||
1992-11-09 00:00:00 11
|
||||
1992-11-10 00:00:00 11
|
||||
1992-11-11 00:00:00 11
|
||||
1992-11-12 00:00:00 11
|
||||
1992-11-13 00:00:00 11
|
||||
1992-11-14 00:00:00 11
|
||||
1992-11-15 00:00:00 11
|
||||
1992-11-16 00:00:00 11
|
||||
1992-11-17 00:00:00 11
|
||||
1992-11-18 00:00:00 11
|
||||
1992-11-19 00:00:00 11
|
||||
1992-11-20 00:00:00 11
|
||||
1992-11-21 00:00:00 11
|
||||
1992-11-22 00:00:00 11
|
||||
1992-11-23 00:00:00 11
|
||||
1992-11-24 00:00:00 11
|
||||
1992-11-25 00:00:00 11
|
||||
1992-11-26 00:00:00 11
|
||||
1992-11-27 00:00:00 11
|
||||
1992-11-28 00:00:00 11
|
||||
1992-11-29 00:00:00 11
|
||||
1992-11-30 00:00:00 11
|
||||
1992-12-01 00:00:00 12
|
||||
1992-12-02 00:00:00 12
|
||||
1992-12-03 00:00:00 12
|
||||
1992-12-04 00:00:00 12
|
||||
1992-12-05 00:00:00 12
|
||||
1992-12-06 00:00:00 12
|
||||
1992-12-07 00:00:00 12
|
||||
1992-12-08 00:00:00 12
|
||||
1992-12-09 00:00:00 12
|
||||
1992-12-10 00:00:00 12
|
||||
1992-12-11 00:00:00 12
|
||||
1992-12-12 00:00:00 12
|
||||
1992-12-13 00:00:00 12
|
||||
1992-12-14 00:00:00 12
|
||||
1992-12-15 00:00:00 12
|
||||
1992-12-16 00:00:00 12
|
||||
1992-12-17 00:00:00 12
|
||||
1992-12-18 00:00:00 12
|
||||
1992-12-19 00:00:00 12
|
||||
1992-12-20 00:00:00 12
|
||||
1992-12-21 00:00:00 12
|
||||
1992-12-22 00:00:00 12
|
||||
1992-12-23 00:00:00 12
|
||||
1992-12-24 00:00:00 12
|
||||
1992-12-25 00:00:00 12
|
||||
1992-12-26 00:00:00 12
|
||||
1992-12-27 00:00:00 12
|
||||
1992-12-28 00:00:00 12
|
||||
1992-12-29 00:00:00 12
|
||||
1992-12-30 00:00:00 12
|
||||
1992-12-31 00:00:00 12
|
||||
|
||||
query II
|
||||
select date '1993-01-01' + interval (i) days, month(date '1993-01-01' + interval (i) days) from range(0, 366) tbl(i);
|
||||
----
|
||||
1993-01-01 00:00:00 1
|
||||
1993-01-02 00:00:00 1
|
||||
1993-01-03 00:00:00 1
|
||||
1993-01-04 00:00:00 1
|
||||
1993-01-05 00:00:00 1
|
||||
1993-01-06 00:00:00 1
|
||||
1993-01-07 00:00:00 1
|
||||
1993-01-08 00:00:00 1
|
||||
1993-01-09 00:00:00 1
|
||||
1993-01-10 00:00:00 1
|
||||
1993-01-11 00:00:00 1
|
||||
1993-01-12 00:00:00 1
|
||||
1993-01-13 00:00:00 1
|
||||
1993-01-14 00:00:00 1
|
||||
1993-01-15 00:00:00 1
|
||||
1993-01-16 00:00:00 1
|
||||
1993-01-17 00:00:00 1
|
||||
1993-01-18 00:00:00 1
|
||||
1993-01-19 00:00:00 1
|
||||
1993-01-20 00:00:00 1
|
||||
1993-01-21 00:00:00 1
|
||||
1993-01-22 00:00:00 1
|
||||
1993-01-23 00:00:00 1
|
||||
1993-01-24 00:00:00 1
|
||||
1993-01-25 00:00:00 1
|
||||
1993-01-26 00:00:00 1
|
||||
1993-01-27 00:00:00 1
|
||||
1993-01-28 00:00:00 1
|
||||
1993-01-29 00:00:00 1
|
||||
1993-01-30 00:00:00 1
|
||||
1993-01-31 00:00:00 1
|
||||
1993-02-01 00:00:00 2
|
||||
1993-02-02 00:00:00 2
|
||||
1993-02-03 00:00:00 2
|
||||
1993-02-04 00:00:00 2
|
||||
1993-02-05 00:00:00 2
|
||||
1993-02-06 00:00:00 2
|
||||
1993-02-07 00:00:00 2
|
||||
1993-02-08 00:00:00 2
|
||||
1993-02-09 00:00:00 2
|
||||
1993-02-10 00:00:00 2
|
||||
1993-02-11 00:00:00 2
|
||||
1993-02-12 00:00:00 2
|
||||
1993-02-13 00:00:00 2
|
||||
1993-02-14 00:00:00 2
|
||||
1993-02-15 00:00:00 2
|
||||
1993-02-16 00:00:00 2
|
||||
1993-02-17 00:00:00 2
|
||||
1993-02-18 00:00:00 2
|
||||
1993-02-19 00:00:00 2
|
||||
1993-02-20 00:00:00 2
|
||||
1993-02-21 00:00:00 2
|
||||
1993-02-22 00:00:00 2
|
||||
1993-02-23 00:00:00 2
|
||||
1993-02-24 00:00:00 2
|
||||
1993-02-25 00:00:00 2
|
||||
1993-02-26 00:00:00 2
|
||||
1993-02-27 00:00:00 2
|
||||
1993-02-28 00:00:00 2
|
||||
1993-03-01 00:00:00 3
|
||||
1993-03-02 00:00:00 3
|
||||
1993-03-03 00:00:00 3
|
||||
1993-03-04 00:00:00 3
|
||||
1993-03-05 00:00:00 3
|
||||
1993-03-06 00:00:00 3
|
||||
1993-03-07 00:00:00 3
|
||||
1993-03-08 00:00:00 3
|
||||
1993-03-09 00:00:00 3
|
||||
1993-03-10 00:00:00 3
|
||||
1993-03-11 00:00:00 3
|
||||
1993-03-12 00:00:00 3
|
||||
1993-03-13 00:00:00 3
|
||||
1993-03-14 00:00:00 3
|
||||
1993-03-15 00:00:00 3
|
||||
1993-03-16 00:00:00 3
|
||||
1993-03-17 00:00:00 3
|
||||
1993-03-18 00:00:00 3
|
||||
1993-03-19 00:00:00 3
|
||||
1993-03-20 00:00:00 3
|
||||
1993-03-21 00:00:00 3
|
||||
1993-03-22 00:00:00 3
|
||||
1993-03-23 00:00:00 3
|
||||
1993-03-24 00:00:00 3
|
||||
1993-03-25 00:00:00 3
|
||||
1993-03-26 00:00:00 3
|
||||
1993-03-27 00:00:00 3
|
||||
1993-03-28 00:00:00 3
|
||||
1993-03-29 00:00:00 3
|
||||
1993-03-30 00:00:00 3
|
||||
1993-03-31 00:00:00 3
|
||||
1993-04-01 00:00:00 4
|
||||
1993-04-02 00:00:00 4
|
||||
1993-04-03 00:00:00 4
|
||||
1993-04-04 00:00:00 4
|
||||
1993-04-05 00:00:00 4
|
||||
1993-04-06 00:00:00 4
|
||||
1993-04-07 00:00:00 4
|
||||
1993-04-08 00:00:00 4
|
||||
1993-04-09 00:00:00 4
|
||||
1993-04-10 00:00:00 4
|
||||
1993-04-11 00:00:00 4
|
||||
1993-04-12 00:00:00 4
|
||||
1993-04-13 00:00:00 4
|
||||
1993-04-14 00:00:00 4
|
||||
1993-04-15 00:00:00 4
|
||||
1993-04-16 00:00:00 4
|
||||
1993-04-17 00:00:00 4
|
||||
1993-04-18 00:00:00 4
|
||||
1993-04-19 00:00:00 4
|
||||
1993-04-20 00:00:00 4
|
||||
1993-04-21 00:00:00 4
|
||||
1993-04-22 00:00:00 4
|
||||
1993-04-23 00:00:00 4
|
||||
1993-04-24 00:00:00 4
|
||||
1993-04-25 00:00:00 4
|
||||
1993-04-26 00:00:00 4
|
||||
1993-04-27 00:00:00 4
|
||||
1993-04-28 00:00:00 4
|
||||
1993-04-29 00:00:00 4
|
||||
1993-04-30 00:00:00 4
|
||||
1993-05-01 00:00:00 5
|
||||
1993-05-02 00:00:00 5
|
||||
1993-05-03 00:00:00 5
|
||||
1993-05-04 00:00:00 5
|
||||
1993-05-05 00:00:00 5
|
||||
1993-05-06 00:00:00 5
|
||||
1993-05-07 00:00:00 5
|
||||
1993-05-08 00:00:00 5
|
||||
1993-05-09 00:00:00 5
|
||||
1993-05-10 00:00:00 5
|
||||
1993-05-11 00:00:00 5
|
||||
1993-05-12 00:00:00 5
|
||||
1993-05-13 00:00:00 5
|
||||
1993-05-14 00:00:00 5
|
||||
1993-05-15 00:00:00 5
|
||||
1993-05-16 00:00:00 5
|
||||
1993-05-17 00:00:00 5
|
||||
1993-05-18 00:00:00 5
|
||||
1993-05-19 00:00:00 5
|
||||
1993-05-20 00:00:00 5
|
||||
1993-05-21 00:00:00 5
|
||||
1993-05-22 00:00:00 5
|
||||
1993-05-23 00:00:00 5
|
||||
1993-05-24 00:00:00 5
|
||||
1993-05-25 00:00:00 5
|
||||
1993-05-26 00:00:00 5
|
||||
1993-05-27 00:00:00 5
|
||||
1993-05-28 00:00:00 5
|
||||
1993-05-29 00:00:00 5
|
||||
1993-05-30 00:00:00 5
|
||||
1993-05-31 00:00:00 5
|
||||
1993-06-01 00:00:00 6
|
||||
1993-06-02 00:00:00 6
|
||||
1993-06-03 00:00:00 6
|
||||
1993-06-04 00:00:00 6
|
||||
1993-06-05 00:00:00 6
|
||||
1993-06-06 00:00:00 6
|
||||
1993-06-07 00:00:00 6
|
||||
1993-06-08 00:00:00 6
|
||||
1993-06-09 00:00:00 6
|
||||
1993-06-10 00:00:00 6
|
||||
1993-06-11 00:00:00 6
|
||||
1993-06-12 00:00:00 6
|
||||
1993-06-13 00:00:00 6
|
||||
1993-06-14 00:00:00 6
|
||||
1993-06-15 00:00:00 6
|
||||
1993-06-16 00:00:00 6
|
||||
1993-06-17 00:00:00 6
|
||||
1993-06-18 00:00:00 6
|
||||
1993-06-19 00:00:00 6
|
||||
1993-06-20 00:00:00 6
|
||||
1993-06-21 00:00:00 6
|
||||
1993-06-22 00:00:00 6
|
||||
1993-06-23 00:00:00 6
|
||||
1993-06-24 00:00:00 6
|
||||
1993-06-25 00:00:00 6
|
||||
1993-06-26 00:00:00 6
|
||||
1993-06-27 00:00:00 6
|
||||
1993-06-28 00:00:00 6
|
||||
1993-06-29 00:00:00 6
|
||||
1993-06-30 00:00:00 6
|
||||
1993-07-01 00:00:00 7
|
||||
1993-07-02 00:00:00 7
|
||||
1993-07-03 00:00:00 7
|
||||
1993-07-04 00:00:00 7
|
||||
1993-07-05 00:00:00 7
|
||||
1993-07-06 00:00:00 7
|
||||
1993-07-07 00:00:00 7
|
||||
1993-07-08 00:00:00 7
|
||||
1993-07-09 00:00:00 7
|
||||
1993-07-10 00:00:00 7
|
||||
1993-07-11 00:00:00 7
|
||||
1993-07-12 00:00:00 7
|
||||
1993-07-13 00:00:00 7
|
||||
1993-07-14 00:00:00 7
|
||||
1993-07-15 00:00:00 7
|
||||
1993-07-16 00:00:00 7
|
||||
1993-07-17 00:00:00 7
|
||||
1993-07-18 00:00:00 7
|
||||
1993-07-19 00:00:00 7
|
||||
1993-07-20 00:00:00 7
|
||||
1993-07-21 00:00:00 7
|
||||
1993-07-22 00:00:00 7
|
||||
1993-07-23 00:00:00 7
|
||||
1993-07-24 00:00:00 7
|
||||
1993-07-25 00:00:00 7
|
||||
1993-07-26 00:00:00 7
|
||||
1993-07-27 00:00:00 7
|
||||
1993-07-28 00:00:00 7
|
||||
1993-07-29 00:00:00 7
|
||||
1993-07-30 00:00:00 7
|
||||
1993-07-31 00:00:00 7
|
||||
1993-08-01 00:00:00 8
|
||||
1993-08-02 00:00:00 8
|
||||
1993-08-03 00:00:00 8
|
||||
1993-08-04 00:00:00 8
|
||||
1993-08-05 00:00:00 8
|
||||
1993-08-06 00:00:00 8
|
||||
1993-08-07 00:00:00 8
|
||||
1993-08-08 00:00:00 8
|
||||
1993-08-09 00:00:00 8
|
||||
1993-08-10 00:00:00 8
|
||||
1993-08-11 00:00:00 8
|
||||
1993-08-12 00:00:00 8
|
||||
1993-08-13 00:00:00 8
|
||||
1993-08-14 00:00:00 8
|
||||
1993-08-15 00:00:00 8
|
||||
1993-08-16 00:00:00 8
|
||||
1993-08-17 00:00:00 8
|
||||
1993-08-18 00:00:00 8
|
||||
1993-08-19 00:00:00 8
|
||||
1993-08-20 00:00:00 8
|
||||
1993-08-21 00:00:00 8
|
||||
1993-08-22 00:00:00 8
|
||||
1993-08-23 00:00:00 8
|
||||
1993-08-24 00:00:00 8
|
||||
1993-08-25 00:00:00 8
|
||||
1993-08-26 00:00:00 8
|
||||
1993-08-27 00:00:00 8
|
||||
1993-08-28 00:00:00 8
|
||||
1993-08-29 00:00:00 8
|
||||
1993-08-30 00:00:00 8
|
||||
1993-08-31 00:00:00 8
|
||||
1993-09-01 00:00:00 9
|
||||
1993-09-02 00:00:00 9
|
||||
1993-09-03 00:00:00 9
|
||||
1993-09-04 00:00:00 9
|
||||
1993-09-05 00:00:00 9
|
||||
1993-09-06 00:00:00 9
|
||||
1993-09-07 00:00:00 9
|
||||
1993-09-08 00:00:00 9
|
||||
1993-09-09 00:00:00 9
|
||||
1993-09-10 00:00:00 9
|
||||
1993-09-11 00:00:00 9
|
||||
1993-09-12 00:00:00 9
|
||||
1993-09-13 00:00:00 9
|
||||
1993-09-14 00:00:00 9
|
||||
1993-09-15 00:00:00 9
|
||||
1993-09-16 00:00:00 9
|
||||
1993-09-17 00:00:00 9
|
||||
1993-09-18 00:00:00 9
|
||||
1993-09-19 00:00:00 9
|
||||
1993-09-20 00:00:00 9
|
||||
1993-09-21 00:00:00 9
|
||||
1993-09-22 00:00:00 9
|
||||
1993-09-23 00:00:00 9
|
||||
1993-09-24 00:00:00 9
|
||||
1993-09-25 00:00:00 9
|
||||
1993-09-26 00:00:00 9
|
||||
1993-09-27 00:00:00 9
|
||||
1993-09-28 00:00:00 9
|
||||
1993-09-29 00:00:00 9
|
||||
1993-09-30 00:00:00 9
|
||||
1993-10-01 00:00:00 10
|
||||
1993-10-02 00:00:00 10
|
||||
1993-10-03 00:00:00 10
|
||||
1993-10-04 00:00:00 10
|
||||
1993-10-05 00:00:00 10
|
||||
1993-10-06 00:00:00 10
|
||||
1993-10-07 00:00:00 10
|
||||
1993-10-08 00:00:00 10
|
||||
1993-10-09 00:00:00 10
|
||||
1993-10-10 00:00:00 10
|
||||
1993-10-11 00:00:00 10
|
||||
1993-10-12 00:00:00 10
|
||||
1993-10-13 00:00:00 10
|
||||
1993-10-14 00:00:00 10
|
||||
1993-10-15 00:00:00 10
|
||||
1993-10-16 00:00:00 10
|
||||
1993-10-17 00:00:00 10
|
||||
1993-10-18 00:00:00 10
|
||||
1993-10-19 00:00:00 10
|
||||
1993-10-20 00:00:00 10
|
||||
1993-10-21 00:00:00 10
|
||||
1993-10-22 00:00:00 10
|
||||
1993-10-23 00:00:00 10
|
||||
1993-10-24 00:00:00 10
|
||||
1993-10-25 00:00:00 10
|
||||
1993-10-26 00:00:00 10
|
||||
1993-10-27 00:00:00 10
|
||||
1993-10-28 00:00:00 10
|
||||
1993-10-29 00:00:00 10
|
||||
1993-10-30 00:00:00 10
|
||||
1993-10-31 00:00:00 10
|
||||
1993-11-01 00:00:00 11
|
||||
1993-11-02 00:00:00 11
|
||||
1993-11-03 00:00:00 11
|
||||
1993-11-04 00:00:00 11
|
||||
1993-11-05 00:00:00 11
|
||||
1993-11-06 00:00:00 11
|
||||
1993-11-07 00:00:00 11
|
||||
1993-11-08 00:00:00 11
|
||||
1993-11-09 00:00:00 11
|
||||
1993-11-10 00:00:00 11
|
||||
1993-11-11 00:00:00 11
|
||||
1993-11-12 00:00:00 11
|
||||
1993-11-13 00:00:00 11
|
||||
1993-11-14 00:00:00 11
|
||||
1993-11-15 00:00:00 11
|
||||
1993-11-16 00:00:00 11
|
||||
1993-11-17 00:00:00 11
|
||||
1993-11-18 00:00:00 11
|
||||
1993-11-19 00:00:00 11
|
||||
1993-11-20 00:00:00 11
|
||||
1993-11-21 00:00:00 11
|
||||
1993-11-22 00:00:00 11
|
||||
1993-11-23 00:00:00 11
|
||||
1993-11-24 00:00:00 11
|
||||
1993-11-25 00:00:00 11
|
||||
1993-11-26 00:00:00 11
|
||||
1993-11-27 00:00:00 11
|
||||
1993-11-28 00:00:00 11
|
||||
1993-11-29 00:00:00 11
|
||||
1993-11-30 00:00:00 11
|
||||
1993-12-01 00:00:00 12
|
||||
1993-12-02 00:00:00 12
|
||||
1993-12-03 00:00:00 12
|
||||
1993-12-04 00:00:00 12
|
||||
1993-12-05 00:00:00 12
|
||||
1993-12-06 00:00:00 12
|
||||
1993-12-07 00:00:00 12
|
||||
1993-12-08 00:00:00 12
|
||||
1993-12-09 00:00:00 12
|
||||
1993-12-10 00:00:00 12
|
||||
1993-12-11 00:00:00 12
|
||||
1993-12-12 00:00:00 12
|
||||
1993-12-13 00:00:00 12
|
||||
1993-12-14 00:00:00 12
|
||||
1993-12-15 00:00:00 12
|
||||
1993-12-16 00:00:00 12
|
||||
1993-12-17 00:00:00 12
|
||||
1993-12-18 00:00:00 12
|
||||
1993-12-19 00:00:00 12
|
||||
1993-12-20 00:00:00 12
|
||||
1993-12-21 00:00:00 12
|
||||
1993-12-22 00:00:00 12
|
||||
1993-12-23 00:00:00 12
|
||||
1993-12-24 00:00:00 12
|
||||
1993-12-25 00:00:00 12
|
||||
1993-12-26 00:00:00 12
|
||||
1993-12-27 00:00:00 12
|
||||
1993-12-28 00:00:00 12
|
||||
1993-12-29 00:00:00 12
|
||||
1993-12-30 00:00:00 12
|
||||
1993-12-31 00:00:00 12
|
||||
1994-01-01 00:00:00 1
|
||||
650
external/duckdb/test/sql/function/date/test_extract_year.test
vendored
Normal file
650
external/duckdb/test/sql/function/date/test_extract_year.test
vendored
Normal file
@@ -0,0 +1,650 @@
|
||||
# name: test/sql/function/date/test_extract_year.test
|
||||
# description: Extract year function
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates AS SELECT date '1970-01-01' + concat(i, ' years')::interval AS d from range(0, 430) tbl(i);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates2 AS SELECT date '1970-01-01' + concat(i * 6, ' months')::interval AS d from range(0, 200) tbl(i);
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(year FROM d) FROM dates ORDER BY 1
|
||||
----
|
||||
1970
|
||||
1971
|
||||
1972
|
||||
1973
|
||||
1974
|
||||
1975
|
||||
1976
|
||||
1977
|
||||
1978
|
||||
1979
|
||||
1980
|
||||
1981
|
||||
1982
|
||||
1983
|
||||
1984
|
||||
1985
|
||||
1986
|
||||
1987
|
||||
1988
|
||||
1989
|
||||
1990
|
||||
1991
|
||||
1992
|
||||
1993
|
||||
1994
|
||||
1995
|
||||
1996
|
||||
1997
|
||||
1998
|
||||
1999
|
||||
2000
|
||||
2001
|
||||
2002
|
||||
2003
|
||||
2004
|
||||
2005
|
||||
2006
|
||||
2007
|
||||
2008
|
||||
2009
|
||||
2010
|
||||
2011
|
||||
2012
|
||||
2013
|
||||
2014
|
||||
2015
|
||||
2016
|
||||
2017
|
||||
2018
|
||||
2019
|
||||
2020
|
||||
2021
|
||||
2022
|
||||
2023
|
||||
2024
|
||||
2025
|
||||
2026
|
||||
2027
|
||||
2028
|
||||
2029
|
||||
2030
|
||||
2031
|
||||
2032
|
||||
2033
|
||||
2034
|
||||
2035
|
||||
2036
|
||||
2037
|
||||
2038
|
||||
2039
|
||||
2040
|
||||
2041
|
||||
2042
|
||||
2043
|
||||
2044
|
||||
2045
|
||||
2046
|
||||
2047
|
||||
2048
|
||||
2049
|
||||
2050
|
||||
2051
|
||||
2052
|
||||
2053
|
||||
2054
|
||||
2055
|
||||
2056
|
||||
2057
|
||||
2058
|
||||
2059
|
||||
2060
|
||||
2061
|
||||
2062
|
||||
2063
|
||||
2064
|
||||
2065
|
||||
2066
|
||||
2067
|
||||
2068
|
||||
2069
|
||||
2070
|
||||
2071
|
||||
2072
|
||||
2073
|
||||
2074
|
||||
2075
|
||||
2076
|
||||
2077
|
||||
2078
|
||||
2079
|
||||
2080
|
||||
2081
|
||||
2082
|
||||
2083
|
||||
2084
|
||||
2085
|
||||
2086
|
||||
2087
|
||||
2088
|
||||
2089
|
||||
2090
|
||||
2091
|
||||
2092
|
||||
2093
|
||||
2094
|
||||
2095
|
||||
2096
|
||||
2097
|
||||
2098
|
||||
2099
|
||||
2100
|
||||
2101
|
||||
2102
|
||||
2103
|
||||
2104
|
||||
2105
|
||||
2106
|
||||
2107
|
||||
2108
|
||||
2109
|
||||
2110
|
||||
2111
|
||||
2112
|
||||
2113
|
||||
2114
|
||||
2115
|
||||
2116
|
||||
2117
|
||||
2118
|
||||
2119
|
||||
2120
|
||||
2121
|
||||
2122
|
||||
2123
|
||||
2124
|
||||
2125
|
||||
2126
|
||||
2127
|
||||
2128
|
||||
2129
|
||||
2130
|
||||
2131
|
||||
2132
|
||||
2133
|
||||
2134
|
||||
2135
|
||||
2136
|
||||
2137
|
||||
2138
|
||||
2139
|
||||
2140
|
||||
2141
|
||||
2142
|
||||
2143
|
||||
2144
|
||||
2145
|
||||
2146
|
||||
2147
|
||||
2148
|
||||
2149
|
||||
2150
|
||||
2151
|
||||
2152
|
||||
2153
|
||||
2154
|
||||
2155
|
||||
2156
|
||||
2157
|
||||
2158
|
||||
2159
|
||||
2160
|
||||
2161
|
||||
2162
|
||||
2163
|
||||
2164
|
||||
2165
|
||||
2166
|
||||
2167
|
||||
2168
|
||||
2169
|
||||
2170
|
||||
2171
|
||||
2172
|
||||
2173
|
||||
2174
|
||||
2175
|
||||
2176
|
||||
2177
|
||||
2178
|
||||
2179
|
||||
2180
|
||||
2181
|
||||
2182
|
||||
2183
|
||||
2184
|
||||
2185
|
||||
2186
|
||||
2187
|
||||
2188
|
||||
2189
|
||||
2190
|
||||
2191
|
||||
2192
|
||||
2193
|
||||
2194
|
||||
2195
|
||||
2196
|
||||
2197
|
||||
2198
|
||||
2199
|
||||
2200
|
||||
2201
|
||||
2202
|
||||
2203
|
||||
2204
|
||||
2205
|
||||
2206
|
||||
2207
|
||||
2208
|
||||
2209
|
||||
2210
|
||||
2211
|
||||
2212
|
||||
2213
|
||||
2214
|
||||
2215
|
||||
2216
|
||||
2217
|
||||
2218
|
||||
2219
|
||||
2220
|
||||
2221
|
||||
2222
|
||||
2223
|
||||
2224
|
||||
2225
|
||||
2226
|
||||
2227
|
||||
2228
|
||||
2229
|
||||
2230
|
||||
2231
|
||||
2232
|
||||
2233
|
||||
2234
|
||||
2235
|
||||
2236
|
||||
2237
|
||||
2238
|
||||
2239
|
||||
2240
|
||||
2241
|
||||
2242
|
||||
2243
|
||||
2244
|
||||
2245
|
||||
2246
|
||||
2247
|
||||
2248
|
||||
2249
|
||||
2250
|
||||
2251
|
||||
2252
|
||||
2253
|
||||
2254
|
||||
2255
|
||||
2256
|
||||
2257
|
||||
2258
|
||||
2259
|
||||
2260
|
||||
2261
|
||||
2262
|
||||
2263
|
||||
2264
|
||||
2265
|
||||
2266
|
||||
2267
|
||||
2268
|
||||
2269
|
||||
2270
|
||||
2271
|
||||
2272
|
||||
2273
|
||||
2274
|
||||
2275
|
||||
2276
|
||||
2277
|
||||
2278
|
||||
2279
|
||||
2280
|
||||
2281
|
||||
2282
|
||||
2283
|
||||
2284
|
||||
2285
|
||||
2286
|
||||
2287
|
||||
2288
|
||||
2289
|
||||
2290
|
||||
2291
|
||||
2292
|
||||
2293
|
||||
2294
|
||||
2295
|
||||
2296
|
||||
2297
|
||||
2298
|
||||
2299
|
||||
2300
|
||||
2301
|
||||
2302
|
||||
2303
|
||||
2304
|
||||
2305
|
||||
2306
|
||||
2307
|
||||
2308
|
||||
2309
|
||||
2310
|
||||
2311
|
||||
2312
|
||||
2313
|
||||
2314
|
||||
2315
|
||||
2316
|
||||
2317
|
||||
2318
|
||||
2319
|
||||
2320
|
||||
2321
|
||||
2322
|
||||
2323
|
||||
2324
|
||||
2325
|
||||
2326
|
||||
2327
|
||||
2328
|
||||
2329
|
||||
2330
|
||||
2331
|
||||
2332
|
||||
2333
|
||||
2334
|
||||
2335
|
||||
2336
|
||||
2337
|
||||
2338
|
||||
2339
|
||||
2340
|
||||
2341
|
||||
2342
|
||||
2343
|
||||
2344
|
||||
2345
|
||||
2346
|
||||
2347
|
||||
2348
|
||||
2349
|
||||
2350
|
||||
2351
|
||||
2352
|
||||
2353
|
||||
2354
|
||||
2355
|
||||
2356
|
||||
2357
|
||||
2358
|
||||
2359
|
||||
2360
|
||||
2361
|
||||
2362
|
||||
2363
|
||||
2364
|
||||
2365
|
||||
2366
|
||||
2367
|
||||
2368
|
||||
2369
|
||||
2370
|
||||
2371
|
||||
2372
|
||||
2373
|
||||
2374
|
||||
2375
|
||||
2376
|
||||
2377
|
||||
2378
|
||||
2379
|
||||
2380
|
||||
2381
|
||||
2382
|
||||
2383
|
||||
2384
|
||||
2385
|
||||
2386
|
||||
2387
|
||||
2388
|
||||
2389
|
||||
2390
|
||||
2391
|
||||
2392
|
||||
2393
|
||||
2394
|
||||
2395
|
||||
2396
|
||||
2397
|
||||
2398
|
||||
2399
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(year FROM d) FROM dates2 ORDER BY 1
|
||||
----
|
||||
1970
|
||||
1970
|
||||
1971
|
||||
1971
|
||||
1972
|
||||
1972
|
||||
1973
|
||||
1973
|
||||
1974
|
||||
1974
|
||||
1975
|
||||
1975
|
||||
1976
|
||||
1976
|
||||
1977
|
||||
1977
|
||||
1978
|
||||
1978
|
||||
1979
|
||||
1979
|
||||
1980
|
||||
1980
|
||||
1981
|
||||
1981
|
||||
1982
|
||||
1982
|
||||
1983
|
||||
1983
|
||||
1984
|
||||
1984
|
||||
1985
|
||||
1985
|
||||
1986
|
||||
1986
|
||||
1987
|
||||
1987
|
||||
1988
|
||||
1988
|
||||
1989
|
||||
1989
|
||||
1990
|
||||
1990
|
||||
1991
|
||||
1991
|
||||
1992
|
||||
1992
|
||||
1993
|
||||
1993
|
||||
1994
|
||||
1994
|
||||
1995
|
||||
1995
|
||||
1996
|
||||
1996
|
||||
1997
|
||||
1997
|
||||
1998
|
||||
1998
|
||||
1999
|
||||
1999
|
||||
2000
|
||||
2000
|
||||
2001
|
||||
2001
|
||||
2002
|
||||
2002
|
||||
2003
|
||||
2003
|
||||
2004
|
||||
2004
|
||||
2005
|
||||
2005
|
||||
2006
|
||||
2006
|
||||
2007
|
||||
2007
|
||||
2008
|
||||
2008
|
||||
2009
|
||||
2009
|
||||
2010
|
||||
2010
|
||||
2011
|
||||
2011
|
||||
2012
|
||||
2012
|
||||
2013
|
||||
2013
|
||||
2014
|
||||
2014
|
||||
2015
|
||||
2015
|
||||
2016
|
||||
2016
|
||||
2017
|
||||
2017
|
||||
2018
|
||||
2018
|
||||
2019
|
||||
2019
|
||||
2020
|
||||
2020
|
||||
2021
|
||||
2021
|
||||
2022
|
||||
2022
|
||||
2023
|
||||
2023
|
||||
2024
|
||||
2024
|
||||
2025
|
||||
2025
|
||||
2026
|
||||
2026
|
||||
2027
|
||||
2027
|
||||
2028
|
||||
2028
|
||||
2029
|
||||
2029
|
||||
2030
|
||||
2030
|
||||
2031
|
||||
2031
|
||||
2032
|
||||
2032
|
||||
2033
|
||||
2033
|
||||
2034
|
||||
2034
|
||||
2035
|
||||
2035
|
||||
2036
|
||||
2036
|
||||
2037
|
||||
2037
|
||||
2038
|
||||
2038
|
||||
2039
|
||||
2039
|
||||
2040
|
||||
2040
|
||||
2041
|
||||
2041
|
||||
2042
|
||||
2042
|
||||
2043
|
||||
2043
|
||||
2044
|
||||
2044
|
||||
2045
|
||||
2045
|
||||
2046
|
||||
2046
|
||||
2047
|
||||
2047
|
||||
2048
|
||||
2048
|
||||
2049
|
||||
2049
|
||||
2050
|
||||
2050
|
||||
2051
|
||||
2051
|
||||
2052
|
||||
2052
|
||||
2053
|
||||
2053
|
||||
2054
|
||||
2054
|
||||
2055
|
||||
2055
|
||||
2056
|
||||
2056
|
||||
2057
|
||||
2057
|
||||
2058
|
||||
2058
|
||||
2059
|
||||
2059
|
||||
2060
|
||||
2060
|
||||
2061
|
||||
2061
|
||||
2062
|
||||
2062
|
||||
2063
|
||||
2063
|
||||
2064
|
||||
2064
|
||||
2065
|
||||
2065
|
||||
2066
|
||||
2066
|
||||
2067
|
||||
2067
|
||||
2068
|
||||
2068
|
||||
2069
|
||||
2069
|
||||
172
external/duckdb/test/sql/function/date/test_strftime.test
vendored
Normal file
172
external/duckdb/test/sql/function/date/test_strftime.test
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
# name: test/sql/function/date/test_strftime.test
|
||||
# description: Test strftime function
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# simple single specifier
|
||||
query I
|
||||
SELECT strftime(DATE '1992-01-01', '%Y');
|
||||
----
|
||||
1992
|
||||
|
||||
# flip the order
|
||||
query I
|
||||
SELECT strftime('%Y', DATE '1992-01-01');
|
||||
----
|
||||
1992
|
||||
|
||||
query I
|
||||
SELECT strftime('%Y', TIMESTAMP '1992-01-01');
|
||||
----
|
||||
1992
|
||||
|
||||
# some literals
|
||||
query I
|
||||
SELECT strftime(DATE '1992-01-01', '(%Y)');
|
||||
----
|
||||
(1992)
|
||||
|
||||
# escapes
|
||||
query I
|
||||
SELECT strftime(DATE '1992-01-01', '%% %Y %%');
|
||||
----
|
||||
% 1992 %
|
||||
|
||||
# many consecutive escapes
|
||||
query I
|
||||
SELECT strftime(DATE '1992-01-01', '%%%%%% %Y %%%%%%');
|
||||
----
|
||||
%%% 1992 %%%
|
||||
|
||||
# multiple specifiers
|
||||
query I
|
||||
SELECT strftime(DATE '1992-02-01', '%d/%m/%Y');
|
||||
----
|
||||
01/02/1992
|
||||
|
||||
# we can repeat the same specifier many times
|
||||
query I
|
||||
SELECT strftime(DATE '1992-02-01', '%Y %Y %Y %Y');
|
||||
----
|
||||
1992 1992 1992 1992
|
||||
|
||||
# test on a table
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE);
|
||||
INSERT INTO dates VALUES ('1992-01-01'), ('1993-03-20'), (NULL);
|
||||
|
||||
query I
|
||||
SELECT strftime(d, '%d/%m/%Y') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
01/01/1992
|
||||
20/03/1993
|
||||
|
||||
# null date
|
||||
query I
|
||||
SELECT strftime(NULL::DATE, '%d/%m/%Y') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# null format
|
||||
query I
|
||||
SELECT strftime(d, NULL) FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT strftime(NULL::TIMESTAMP, NULL) FROM range(3);
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT strftime(NULL::TIMESTAMP, '%%%%%% %Y %%%%%%') FROM range(3);
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# no specifiers, only constant
|
||||
query I
|
||||
SELECT strftime(DATE '1992-01-01', 'hello world');
|
||||
----
|
||||
hello world
|
||||
|
||||
query I
|
||||
SELECT strftime('2019-01-23'::DATE, '42');
|
||||
----
|
||||
42
|
||||
|
||||
#
|
||||
# Infinities
|
||||
#
|
||||
|
||||
foreach datatype DATE TIMESTAMP
|
||||
|
||||
# PG to_char returns NULL here
|
||||
# but we can do better.
|
||||
query I
|
||||
SELECT strftime('infinity'::${datatype}, '%Y-%m-%d');
|
||||
----
|
||||
infinity
|
||||
|
||||
query I
|
||||
SELECT strftime('-infinity'::${datatype}, '%Y-%m-%d');
|
||||
----
|
||||
-infinity
|
||||
|
||||
endloop
|
||||
|
||||
# non-constant format not supported
|
||||
statement error
|
||||
SELECT strftime(d, d::VARCHAR) FROM dates ORDER BY d;
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*must be a constant.*
|
||||
|
||||
# unterminated escape
|
||||
statement error
|
||||
SELECT strftime(DATE '1992-01-01', '%');
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*Failed to parse format.*
|
||||
|
||||
# unrecognized code
|
||||
statement error
|
||||
SELECT strftime(DATE '1992-01-01', '%R');
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*Failed to parse format.*
|
||||
|
||||
# millisecond specifier %g
|
||||
query IIII
|
||||
select strftime(strptime('023', '%g'), '%g'), strftime(strptime('0', '%g'), '%g'), strftime(strptime('000', '%g'), '%g'), strftime(strptime('999', '%g'), '%g');
|
||||
----
|
||||
023
|
||||
000
|
||||
000
|
||||
999
|
||||
|
||||
statement error
|
||||
SELECT strptime('-1', '%g');
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*Could not parse string.*
|
||||
|
||||
statement error
|
||||
SELECT strptime('1000', '%g');
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*Could not parse string.*
|
||||
|
||||
# this won't work without explicit casts
|
||||
statement error
|
||||
SELECT strftime('%Y', '1992-01-01');
|
||||
----
|
||||
<REGEX>:.*Binder Error.*Could not choose a best candidate.*
|
||||
417
external/duckdb/test/sql/function/date/test_strftime_exhaustive.test
vendored
Normal file
417
external/duckdb/test/sql/function/date/test_strftime_exhaustive.test
vendored
Normal file
@@ -0,0 +1,417 @@
|
||||
# name: test/sql/function/date/test_strftime_exhaustive.test
|
||||
# description: Test all strftime % codes with the date type
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(d DATE);
|
||||
INSERT INTO dates VALUES ('1992-01-01'), ('1993-03-20'), ('2020-08-09'), ('2020-08-10'), (NULL);
|
||||
|
||||
# %a: Abbreviated weekday name
|
||||
query I
|
||||
SELECT strftime(d, '%a') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
Wed
|
||||
Sat
|
||||
Sun
|
||||
Mon
|
||||
|
||||
# %A: Full weekday name
|
||||
query I
|
||||
SELECT strftime(d, '%A') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
Wednesday
|
||||
Saturday
|
||||
Sunday
|
||||
Monday
|
||||
|
||||
# %w - Weekday as a decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%w') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
3
|
||||
6
|
||||
0
|
||||
1
|
||||
|
||||
# %u - ISO Weekday as a decimal number (1-7)
|
||||
query I
|
||||
SELECT strftime(d, '%u') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
3
|
||||
6
|
||||
7
|
||||
1
|
||||
|
||||
# %d - Day of the month as a zero-padded decimal.
|
||||
query I
|
||||
SELECT strftime(d, '%d') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
01
|
||||
20
|
||||
09
|
||||
10
|
||||
|
||||
# %-d - Day of the month as a decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%-d') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1
|
||||
20
|
||||
9
|
||||
10
|
||||
|
||||
# %b - Abbreviated month name.
|
||||
query I
|
||||
SELECT strftime(d, '%b') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
Jan
|
||||
Mar
|
||||
Aug
|
||||
Aug
|
||||
|
||||
# %h - alias for %b
|
||||
query I
|
||||
SELECT strftime(d, '%h') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
Jan
|
||||
Mar
|
||||
Aug
|
||||
Aug
|
||||
|
||||
# %B - Full month name
|
||||
query I
|
||||
SELECT strftime(d, '%B') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
January
|
||||
March
|
||||
August
|
||||
August
|
||||
|
||||
# %m - Month as a zero-padded decimal number
|
||||
query I
|
||||
SELECT strftime(d, '%m') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
01
|
||||
03
|
||||
08
|
||||
08
|
||||
|
||||
# %-m - Month as a decimal number. (1, 2, ..., 12)
|
||||
query I
|
||||
SELECT strftime(d, '%-m') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1
|
||||
3
|
||||
8
|
||||
8
|
||||
|
||||
# %y - Year without century as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%y') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
92
|
||||
93
|
||||
20
|
||||
20
|
||||
|
||||
# %-y - Year without century as a decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%-y') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
92
|
||||
93
|
||||
20
|
||||
20
|
||||
|
||||
query I
|
||||
SELECT strftime(DATE '2001-01-01', '%-y')
|
||||
----
|
||||
1
|
||||
|
||||
# %Y - Year with century as a decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%Y') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1992
|
||||
1993
|
||||
2020
|
||||
2020
|
||||
|
||||
# %G - ISO Year as a decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%G') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1992
|
||||
1993
|
||||
2020
|
||||
2020
|
||||
|
||||
# %H - Hour (24-hour clock) as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%H') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00
|
||||
00
|
||||
00
|
||||
00
|
||||
|
||||
# %-H - Hour (24-hour clock) as a decimal number. (0, 1, ..., 23)
|
||||
query I
|
||||
SELECT strftime(d, '%-H') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
# %I - Hour (12-hour clock) as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%I') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
|
||||
# %-I - Hour (12-hour clock) as a decimal number. (1, 2, ... 12)
|
||||
query I
|
||||
SELECT strftime(d, '%-I') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
|
||||
# %p - Locale’s AM or PM.
|
||||
query I
|
||||
SELECT strftime(d, '%p') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
AM
|
||||
AM
|
||||
AM
|
||||
AM
|
||||
|
||||
# %M - Minute as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%M') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00
|
||||
00
|
||||
00
|
||||
00
|
||||
|
||||
# %-M - Minute as a decimal number. (0, 1, ..., 59)
|
||||
query I
|
||||
SELECT strftime(d, '%-M') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
# %S - Second as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%S') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00
|
||||
00
|
||||
00
|
||||
00
|
||||
|
||||
# %-S - Second as a decimal number. (0, 1, ..., 59)
|
||||
query I
|
||||
SELECT strftime(d, '%-S') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
# %f - Microsecond as a decimal number, zero-padded on the left.
|
||||
query I
|
||||
SELECT strftime(d, '%f') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
000000
|
||||
000000
|
||||
000000
|
||||
000000
|
||||
|
||||
# %z - UTC offset in the form +HHMM or -HHMM.
|
||||
query I
|
||||
SELECT strftime(d, '%z') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
|
||||
# %Z - Time zone name.
|
||||
query I
|
||||
SELECT strftime(d, '%Z') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
(empty)
|
||||
(empty)
|
||||
(empty)
|
||||
(empty)
|
||||
|
||||
# %j - Day of the year as a zero-padded decimal number.
|
||||
query I
|
||||
SELECT strftime(d, '%j') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
001
|
||||
079
|
||||
222
|
||||
223
|
||||
|
||||
# %-j - Day of the year as a decimal number. (1, 2, ..., 366)
|
||||
query I
|
||||
SELECT strftime(d, '%-j') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1
|
||||
79
|
||||
222
|
||||
223
|
||||
|
||||
# %U - Week number of the year (Sunday as the first day of the week).
|
||||
query I
|
||||
SELECT strftime(d, '%U') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00
|
||||
11
|
||||
32
|
||||
32
|
||||
|
||||
# %W - Week number of the year (Monday as the first day of the week).
|
||||
query I
|
||||
SELECT strftime(d, '%W') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00
|
||||
11
|
||||
31
|
||||
32
|
||||
|
||||
# %V - ISO Week number of the year (First week contains Jan 4).
|
||||
query I
|
||||
SELECT strftime(d, '%V') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
01
|
||||
11
|
||||
32
|
||||
33
|
||||
|
||||
# %c - Locale’s appropriate date and time representation.
|
||||
query I
|
||||
SELECT strftime(d, '%c') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1992-01-01 00:00:00
|
||||
1993-03-20 00:00:00
|
||||
2020-08-09 00:00:00
|
||||
2020-08-10 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strftime(d, 'XX%cXX') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
XX1992-01-01 00:00:00XX
|
||||
XX1993-03-20 00:00:00XX
|
||||
XX2020-08-09 00:00:00XX
|
||||
XX2020-08-10 00:00:00XX
|
||||
|
||||
# %x - Locale’s appropriate date representation.
|
||||
query I
|
||||
SELECT strftime(d, '%x') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
1992-01-01
|
||||
1993-03-20
|
||||
2020-08-09
|
||||
2020-08-10
|
||||
|
||||
# X - Locale’s appropriate time representation.
|
||||
query I
|
||||
SELECT strftime(d, '%X') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
|
||||
query I
|
||||
SELECT strftime(d, 'XX%cXX%xXX%XXX') FROM dates ORDER BY d;
|
||||
----
|
||||
NULL
|
||||
XX1992-01-01 00:00:00XX1992-01-01XX00:00:00XX
|
||||
XX1993-03-20 00:00:00XX1993-03-20XX00:00:00XX
|
||||
XX2020-08-09 00:00:00XX2020-08-09XX00:00:00XX
|
||||
XX2020-08-10 00:00:00XX2020-08-10XX00:00:00XX
|
||||
|
||||
# large year
|
||||
query I
|
||||
SELECT strftime(date '-99999-01-01', '%Y')
|
||||
----
|
||||
-99999
|
||||
|
||||
query I
|
||||
SELECT strftime(date '99999-01-01', '%Y')
|
||||
----
|
||||
99999
|
||||
|
||||
query I
|
||||
SELECT strftime(date '99999-01-01', '%y')
|
||||
----
|
||||
99
|
||||
|
||||
query I
|
||||
SELECT strftime(date '-99999-01-01', '%y')
|
||||
----
|
||||
99
|
||||
|
||||
query I
|
||||
SELECT strftime(DATE '-4869706-10-11','%-yi');
|
||||
----
|
||||
6i
|
||||
|
||||
statement error
|
||||
SELECT strftime(date '-99999-01-01', random()::varchar)
|
||||
----
|
||||
<REGEX>:.*Invalid Input Error.*must be a constant.*
|
||||
603
external/duckdb/test/sql/function/date/test_time_bucket_date.test
vendored
Normal file
603
external/duckdb/test/sql/function/date/test_time_bucket_date.test
vendored
Normal file
@@ -0,0 +1,603 @@
|
||||
# name: test/sql/function/date/test_time_bucket_date.test
|
||||
# description: Test time bucket functionality
|
||||
# group: [date]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE dates(w INTERVAL, d DATE, shift INTERVAL, origin DATE);
|
||||
|
||||
statement ok
|
||||
INSERT INTO dates VALUES ('10 days', '-infinity', '0 days', '1970-01-05'),
|
||||
('10 days', '3000-01-02 (BC)', '3 days', '3000-01-01 (BC)'),
|
||||
('2 months', '1024-04-10 (BC)', '10 days', '1024-03-01 (BC)'),
|
||||
('10 days', '0044-06-15 (BC)', '6 days', '0044-02-01 (BC)'),
|
||||
('10 days', '0794-11-15', '1 week', '0790-11-01'),
|
||||
('10 days', '1700-01-01', '0 days', '1700-01-05'),
|
||||
('1 week', '1832-05-03', '0 days', '1970-05-05'),
|
||||
('10 days', '1897-07-05', '2 days', '1970-06-07'),
|
||||
('10 days', '1906-02-08', '-2 days', '1970-10-03'),
|
||||
('2 months', '1946-09-14', '0 months', '1970-07-05'),
|
||||
('2 months', '2000-01-01', '1 month 1 week', '1970-05-01'),
|
||||
('2 months', '2000-01-03', '-1 month 1 week', '1970-08-20'),
|
||||
('2 year', '2004-05-20', '6 months', '1970-12-31'),
|
||||
('2 year', '2032-12-06', '-6 months', '1969-07-01'),
|
||||
('10 days', 'infinity', '0 days', '1970-01-01'),
|
||||
;
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 days'::interval, d) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3000-01-02 (BC)
|
||||
1024-04-10 (BC) 1024-04-10 (BC)
|
||||
0044-06-15 (BC) 0044-06-14 (BC)
|
||||
0794-11-15 0794-11-15
|
||||
1700-01-01 1699-12-31
|
||||
1832-05-03 1832-05-01
|
||||
1897-07-05 1897-07-04
|
||||
1906-02-08 1906-02-06
|
||||
1946-09-14 1946-09-13
|
||||
2000-01-01 1999-12-31
|
||||
2000-01-03 2000-01-03
|
||||
2004-05-20 2004-05-20
|
||||
2032-12-06 2032-12-04
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 years'::interval, d) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3002-01-01 (BC)
|
||||
1024-04-10 (BC) 1025-01-01 (BC)
|
||||
0044-06-15 (BC) 0044-01-01 (BC)
|
||||
0794-11-15 0794-01-01
|
||||
1700-01-01 1700-01-01
|
||||
1832-05-03 1832-01-01
|
||||
1897-07-05 1895-01-01
|
||||
1906-02-08 1904-01-01
|
||||
1946-09-14 1946-01-01
|
||||
2000-01-01 2000-01-01
|
||||
2000-01-03 2000-01-01
|
||||
2004-05-20 2003-01-01
|
||||
2032-12-06 2030-01-01
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket(null::interval, d) from dates;
|
||||
----
|
||||
-infinity NULL
|
||||
3000-01-02 (BC) NULL
|
||||
1024-04-10 (BC) NULL
|
||||
0044-06-15 (BC) NULL
|
||||
0794-11-15 NULL
|
||||
1700-01-01 NULL
|
||||
1832-05-03 NULL
|
||||
1897-07-05 NULL
|
||||
1906-02-08 NULL
|
||||
1946-09-14 NULL
|
||||
2000-01-01 NULL
|
||||
2000-01-03 NULL
|
||||
2004-05-20 NULL
|
||||
2032-12-06 NULL
|
||||
infinity NULL
|
||||
|
||||
query III
|
||||
select w, d, time_bucket(w, d) from dates;
|
||||
----
|
||||
10 days -infinity -infinity
|
||||
10 days 3000-01-02 (BC) 3001-12-31 (BC)
|
||||
2 months 1024-04-10 (BC) 1024-03-01 (BC)
|
||||
10 days 0044-06-15 (BC) 0044-06-12 (BC)
|
||||
10 days 0794-11-15 0794-11-11
|
||||
10 days 1700-01-01 1699-12-26
|
||||
7 days 1832-05-03 1832-04-30
|
||||
10 days 1897-07-05 1897-07-01
|
||||
10 days 1906-02-08 1906-02-05
|
||||
2 months 1946-09-14 1946-09-01
|
||||
2 months 2000-01-01 2000-01-01
|
||||
2 months 2000-01-03 2000-01-01
|
||||
2 years 2004-05-20 2004-01-01
|
||||
2 years 2032-12-06 2032-01-01
|
||||
10 days infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('4 days'::interval, d, '6 hours'::interval) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3001-12-29 (BC)
|
||||
1024-04-10 (BC) 1024-04-08 (BC)
|
||||
0044-06-15 (BC) 0044-06-14 (BC)
|
||||
0794-11-15 0794-11-13
|
||||
1700-01-01 1699-12-30
|
||||
1832-05-03 1832-04-29
|
||||
1897-07-05 1897-07-01
|
||||
1906-02-08 1906-02-05
|
||||
1946-09-14 1946-09-11
|
||||
2000-01-01 1999-12-30
|
||||
2000-01-03 1999-12-30
|
||||
2004-05-20 2004-05-17
|
||||
2032-12-06 2032-12-04
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('2 weeks'::interval, d, '6 days'::interval) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3001-12-21 (BC)
|
||||
1024-04-10 (BC) 1024-04-06 (BC)
|
||||
0044-06-15 (BC) 0044-06-02 (BC)
|
||||
0794-11-15 0794-11-13
|
||||
1700-01-01 1699-12-20
|
||||
1832-05-03 1832-04-29
|
||||
1897-07-05 1897-06-27
|
||||
1906-02-08 1906-01-28
|
||||
1946-09-14 1946-09-01
|
||||
2000-01-01 1999-12-26
|
||||
2000-01-03 1999-12-26
|
||||
2004-05-20 2004-05-09
|
||||
2032-12-06 2032-11-28
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 months'::interval, d, '6 days'::interval) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3001-10-07 (BC)
|
||||
1024-04-10 (BC) 1024-04-07 (BC)
|
||||
0044-06-15 (BC) 0044-04-07 (BC)
|
||||
0794-11-15 0794-10-07
|
||||
1700-01-01 1699-10-07
|
||||
1832-05-03 1832-04-07
|
||||
1897-07-05 1897-04-07
|
||||
1906-02-08 1906-01-07
|
||||
1946-09-14 1946-07-07
|
||||
2000-01-01 1999-10-07
|
||||
2000-01-03 1999-10-07
|
||||
2004-05-20 2004-04-07
|
||||
2032-12-06 2032-10-07
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket(null::interval, d, '6 days'::interval) from dates;
|
||||
----
|
||||
-infinity NULL
|
||||
3000-01-02 (BC) NULL
|
||||
1024-04-10 (BC) NULL
|
||||
0044-06-15 (BC) NULL
|
||||
0794-11-15 NULL
|
||||
1700-01-01 NULL
|
||||
1832-05-03 NULL
|
||||
1897-07-05 NULL
|
||||
1906-02-08 NULL
|
||||
1946-09-14 NULL
|
||||
2000-01-01 NULL
|
||||
2000-01-03 NULL
|
||||
2004-05-20 NULL
|
||||
2032-12-06 NULL
|
||||
infinity NULL
|
||||
|
||||
query I
|
||||
select time_bucket('3 months'::interval, null::date, '6 days'::interval) from dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 months'::interval, d, null::interval) from dates;
|
||||
----
|
||||
-infinity NULL
|
||||
3000-01-02 (BC) NULL
|
||||
1024-04-10 (BC) NULL
|
||||
0044-06-15 (BC) NULL
|
||||
0794-11-15 NULL
|
||||
1700-01-01 NULL
|
||||
1832-05-03 NULL
|
||||
1897-07-05 NULL
|
||||
1906-02-08 NULL
|
||||
1946-09-14 NULL
|
||||
2000-01-01 NULL
|
||||
2000-01-03 NULL
|
||||
2004-05-20 NULL
|
||||
2032-12-06 NULL
|
||||
infinity NULL
|
||||
|
||||
query IIII
|
||||
select w, d, shift, time_bucket(w, d, shift) from dates;
|
||||
----
|
||||
10 days -infinity 00:00:00 -infinity
|
||||
10 days 3000-01-02 (BC) 3 days 3001-12-24 (BC)
|
||||
2 months 1024-04-10 (BC) 10 days 1024-03-11 (BC)
|
||||
10 days 0044-06-15 (BC) 6 days 0044-06-08 (BC)
|
||||
10 days 0794-11-15 7 days 0794-11-08
|
||||
10 days 1700-01-01 00:00:00 1699-12-26
|
||||
7 days 1832-05-03 00:00:00 1832-04-30
|
||||
10 days 1897-07-05 2 days 1897-07-03
|
||||
10 days 1906-02-08 -2 days 1906-02-03
|
||||
2 months 1946-09-14 00:00:00 1946-09-01
|
||||
2 months 2000-01-01 1 month 7 days 1999-12-08
|
||||
2 months 2000-01-03 -1 month 7 days 1999-12-08
|
||||
2 years 2004-05-20 6 months 2002-07-01
|
||||
2 years 2032-12-06 -6 months 2031-07-01
|
||||
10 days infinity 00:00:00 infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('5 days'::interval, d, '1970-01-04'::date) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3001-12-30 (BC)
|
||||
1024-04-10 (BC) 1024-04-09 (BC)
|
||||
0044-06-15 (BC) 0044-06-11 (BC)
|
||||
0794-11-15 0794-11-15
|
||||
1700-01-01 1699-12-30
|
||||
1832-05-03 1832-05-02
|
||||
1897-07-05 1897-07-05
|
||||
1906-02-08 1906-02-04
|
||||
1946-09-14 1946-09-12
|
||||
2000-01-01 1999-12-28
|
||||
2000-01-03 2000-01-02
|
||||
2004-05-20 2004-05-20
|
||||
2032-12-06 2032-12-04
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 months'::interval, d, '1970-01-04'::date) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3000-01-01 (BC)
|
||||
1024-04-10 (BC) 1024-04-01 (BC)
|
||||
0044-06-15 (BC) 0044-04-01 (BC)
|
||||
0794-11-15 0794-10-01
|
||||
1700-01-01 1700-01-01
|
||||
1832-05-03 1832-04-01
|
||||
1897-07-05 1897-07-01
|
||||
1906-02-08 1906-01-01
|
||||
1946-09-14 1946-07-01
|
||||
2000-01-01 2000-01-01
|
||||
2000-01-03 2000-01-01
|
||||
2004-05-20 2004-04-01
|
||||
2032-12-06 2032-10-01
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 years'::interval, d, '1970-01-04'::date) from dates;
|
||||
----
|
||||
-infinity -infinity
|
||||
3000-01-02 (BC) 3002-01-01 (BC)
|
||||
1024-04-10 (BC) 1025-01-01 (BC)
|
||||
0044-06-15 (BC) 0044-01-01 (BC)
|
||||
0794-11-15 0794-01-01
|
||||
1700-01-01 1700-01-01
|
||||
1832-05-03 1832-01-01
|
||||
1897-07-05 1895-01-01
|
||||
1906-02-08 1904-01-01
|
||||
1946-09-14 1946-01-01
|
||||
2000-01-01 2000-01-01
|
||||
2000-01-03 2000-01-01
|
||||
2004-05-20 2003-01-01
|
||||
2032-12-06 2030-01-01
|
||||
infinity infinity
|
||||
|
||||
query II
|
||||
select d, time_bucket(null::interval, d, '1970-01-04'::date) from dates;
|
||||
----
|
||||
-infinity NULL
|
||||
3000-01-02 (BC) NULL
|
||||
1024-04-10 (BC) NULL
|
||||
0044-06-15 (BC) NULL
|
||||
0794-11-15 NULL
|
||||
1700-01-01 NULL
|
||||
1832-05-03 NULL
|
||||
1897-07-05 NULL
|
||||
1906-02-08 NULL
|
||||
1946-09-14 NULL
|
||||
2000-01-01 NULL
|
||||
2000-01-03 NULL
|
||||
2004-05-20 NULL
|
||||
2032-12-06 NULL
|
||||
infinity NULL
|
||||
|
||||
query I
|
||||
select time_bucket('3 years'::interval, null::date, '1970-01-04'::date) from dates;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query II
|
||||
select d, time_bucket('3 years'::interval, d, null::date) from dates;
|
||||
----
|
||||
-infinity NULL
|
||||
3000-01-02 (BC) NULL
|
||||
1024-04-10 (BC) NULL
|
||||
0044-06-15 (BC) NULL
|
||||
0794-11-15 NULL
|
||||
1700-01-01 NULL
|
||||
1832-05-03 NULL
|
||||
1897-07-05 NULL
|
||||
1906-02-08 NULL
|
||||
1946-09-14 NULL
|
||||
2000-01-01 NULL
|
||||
2000-01-03 NULL
|
||||
2004-05-20 NULL
|
||||
2032-12-06 NULL
|
||||
infinity NULL
|
||||
|
||||
query IIII
|
||||
select w, d, origin, time_bucket(w, d, origin) from dates;
|
||||
----
|
||||
10 days -infinity 1970-01-05 -infinity
|
||||
10 days 3000-01-02 (BC) 3000-01-01 (BC) 3000-01-01 (BC)
|
||||
2 months 1024-04-10 (BC) 1024-03-01 (BC) 1024-03-01 (BC)
|
||||
10 days 0044-06-15 (BC) 0044-02-01 (BC) 0044-06-11 (BC)
|
||||
10 days 0794-11-15 0790-11-01 0794-11-10
|
||||
10 days 1700-01-01 1700-01-05 1699-12-26
|
||||
7 days 1832-05-03 1970-05-05 1832-05-01
|
||||
10 days 1897-07-05 1970-06-07 1897-06-29
|
||||
10 days 1906-02-08 1970-10-03 1906-02-01
|
||||
2 months 1946-09-14 1970-07-05 1946-09-01
|
||||
2 months 2000-01-01 1970-05-01 2000-01-01
|
||||
2 months 2000-01-03 1970-08-20 1999-12-01
|
||||
2 years 2004-05-20 1970-12-31 2002-12-01
|
||||
2 years 2032-12-06 1969-07-01 2031-07-01
|
||||
10 days infinity 1970-01-01 infinity
|
||||
|
||||
statement error
|
||||
select time_bucket('-3 hours'::interval, '2019-04-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('-3 hours'::interval, '2019-04-05'::date, '1 hour 30 minutes'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('-3 hours'::interval, '2019-04-05'::date, '2019-04-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('-1 month'::interval, '2019-04-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('-1 month'::interval, '2019-04-05'::date, '1 week'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('-1 month'::interval, '2019-04-05'::date, '2019-04-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 day - 172800 seconds'::interval, '2018-05-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 day - 172800 seconds'::interval, '2018-05-05'::date, '1 hour 30 minutes'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 day - 172800 seconds'::interval, '2018-05-05'::date, '2018-05-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 month 1 day'::interval, '2018-05-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 month 1 day'::interval, '2018-05-05'::date, '1 week'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 month 1 day'::interval, '2019-05-05'::date, '2019-05-05'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('3 days'::interval, '2019-05-05'::date, '2000000000 months'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('3 days'::interval, '2019-05-05'::date, '-2000000000 months'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('3 months'::interval, '2019-05-05'::date, '2000000000 months'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('3 months'::interval, '2019-05-05'::date, '-2000000000 months'::interval);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 month'::interval, '5877642-06-25 (BC)'::date);
|
||||
----
|
||||
|
||||
query I
|
||||
select time_bucket('1 month'::interval, '5877642-07-01 (BC)'::date);
|
||||
----
|
||||
5877642-07-01 (BC)
|
||||
|
||||
statement error
|
||||
select time_bucket('1 week'::interval, '5877642-07-01 (BC)'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 month'::interval, '5881580-07-10'::date, '-1 day'::interval);
|
||||
----
|
||||
|
||||
query I
|
||||
select time_bucket('1 month'::interval, '5881580-07-10'::date);
|
||||
----
|
||||
5881580-07-01
|
||||
|
||||
statement error
|
||||
select time_bucket('1 week'::interval, '290309-12-21 (BC)'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 week'::interval, '290309-12-22 (BC)'::date);
|
||||
----
|
||||
|
||||
statement error
|
||||
select time_bucket('1 day'::interval, '290309-12-21 (BC)'::date);
|
||||
----
|
||||
|
||||
query I
|
||||
select time_bucket('1 day'::interval, '290309-12-22 (BC)'::date);
|
||||
----
|
||||
290309-12-22 (BC)
|
||||
|
||||
statement error
|
||||
select time_bucket('1 week'::interval, '294247-01-11'::date);
|
||||
----
|
||||
|
||||
query I
|
||||
select time_bucket('1 week'::interval, '294247-01-10'::date);
|
||||
----
|
||||
294247-01-04
|
||||
|
||||
statement error
|
||||
select time_bucket('1 day'::interval, '294247-01-11'::date);
|
||||
----
|
||||
|
||||
query I
|
||||
select time_bucket('1 day'::interval, '294247-01-10'::date);
|
||||
----
|
||||
294247-01-10
|
||||
|
||||
query I
|
||||
select time_bucket('1 month 1 day'::interval, null::date);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('1 month 1 day'::interval, null::date, '6 days'::interval);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('1 month 1 day'::interval, null::date, '2022-12-20'::date);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('-1 month'::interval, null::date);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('-1 month'::interval, null::date, '6 days'::interval);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('-1 month'::interval, '2022-12-22'::date, null::interval);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('-1 month'::interval, null::date, '2022-12-20'::date);
|
||||
----
|
||||
NULL
|
||||
|
||||
query I
|
||||
select time_bucket('-1 month'::interval, '2022-12-22'::date, null::date);
|
||||
----
|
||||
NULL
|
||||
|
||||
# non-foldable NULL testing
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, d)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, t)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, d, i)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, t, i)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, d, d)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
WITH cte AS (
|
||||
SELECT NULL::INTERVAL i,
|
||||
NULL::DATE d,
|
||||
NULL::TIMESTAMP t
|
||||
FROM range(1)
|
||||
)
|
||||
SELECT time_bucket(i, t, t)
|
||||
FROM cte
|
||||
----
|
||||
NULL
|
||||
Reference in New Issue
Block a user