should be it
This commit is contained in:
226
external/duckdb/test/sql/function/interval/test_date_part.test
vendored
Normal file
226
external/duckdb/test/sql/function/interval/test_date_part.test
vendored
Normal file
@@ -0,0 +1,226 @@
|
||||
# name: test/sql/function/interval/test_date_part.test
|
||||
# description: Extract function
|
||||
# group: [interval]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE intervals(i INTERVAL, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO intervals VALUES ('2 years', 'year'), ('16 months', 'quarter'), ('42 days', 'day'), ('2066343400 microseconds', 'minute');
|
||||
|
||||
# test date_part with different combinations of constant/non-constant columns
|
||||
query I
|
||||
SELECT date_part(NULL::VARCHAR, NULL::INTERVAL) FROM intervals;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, NULL::INTERVAL) FROM intervals;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# intervals
|
||||
query I
|
||||
SELECT date_part(NULL, i) FROM intervals;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, INTERVAL '4 years 5 months 18 days 128 seconds') FROM intervals;
|
||||
----
|
||||
4
|
||||
2
|
||||
18
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT date_part('seconds', i) FROM intervals;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
26
|
||||
|
||||
query I
|
||||
SELECT date_part('epoch', i) FROM intervals;
|
||||
----
|
||||
63115200.0
|
||||
41925600.0
|
||||
3628800.0
|
||||
2066.3434
|
||||
|
||||
|
||||
query I
|
||||
SELECT date_part(s, i) FROM intervals;
|
||||
----
|
||||
2
|
||||
2
|
||||
42
|
||||
34
|
||||
|
||||
|
||||
# interval gives errors for date-only parts
|
||||
statement error
|
||||
SELECT dayofweek(i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT isodow(i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT dayofyear(i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT week(i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT era(i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT julian(i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT extract(era from i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT extract(julian from i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT date_part('era', i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT date_part('julian', i) FROM intervals;
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT date_part('offset', i) FROM intervals;
|
||||
----
|
||||
|
||||
# Correctness: Compare date_part values with function values
|
||||
foreach partcode millennium century decade year quarter month day hour minute second millisecond microsecond epoch
|
||||
|
||||
query III
|
||||
SELECT i, DATE_PART('${partcode}', i) AS p, ${partcode}(i) AS f
|
||||
FROM intervals
|
||||
WHERE p <> f;
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
#
|
||||
# Structs
|
||||
#
|
||||
|
||||
# Correctness: Compare struct values with scalar values
|
||||
foreach partcode millennium century decade year quarter month day hour minute second millisecond microsecond epoch
|
||||
|
||||
query III
|
||||
SELECT i, DATE_PART('${partcode}', i) AS p, DATE_PART(['${partcode}'], i) AS st
|
||||
FROM intervals
|
||||
WHERE p <> st['${partcode}'];
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
# Day parts
|
||||
query II
|
||||
SELECT i, DATE_PART(['year', 'month', 'day'], i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 {'year': 0, 'month': 0, 'day': 0}
|
||||
42 days {'year': 0, 'month': 0, 'day': 42}
|
||||
1 year 4 months {'year': 1, 'month': 4, 'day': 0}
|
||||
2 years {'year': 2, 'month': 0, 'day': 0}
|
||||
|
||||
# Year parts
|
||||
query II
|
||||
SELECT i, DATE_PART(['millennium', 'century', 'decade', 'quarter'], i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 {'millennium': 0, 'century': 0, 'decade': 0, 'quarter': 1}
|
||||
42 days {'millennium': 0, 'century': 0, 'decade': 0, 'quarter': 1}
|
||||
1 year 4 months {'millennium': 0, 'century': 0, 'decade': 0, 'quarter': 2}
|
||||
2 years {'millennium': 0, 'century': 0, 'decade': 0, 'quarter': 1}
|
||||
|
||||
# Time parts
|
||||
query II
|
||||
SELECT i, DATE_PART(['hour', 'minute', 'second', 'epoch'], i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 {'hour': 0, 'minute': 34, 'second': 26, 'epoch': 2066.3434}
|
||||
42 days {'hour': 0, 'minute': 0, 'second': 0, 'epoch': 3628800.0}
|
||||
1 year 4 months {'hour': 0, 'minute': 0, 'second': 0, 'epoch': 41925600.0}
|
||||
2 years {'hour': 0, 'minute': 0, 'second': 0, 'epoch': 63115200.0}
|
||||
|
||||
# Function-only parts
|
||||
query II
|
||||
SELECT i, epoch_ns(i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 2066343400000
|
||||
42 days 3628800000000000
|
||||
1 year 4 months 41472000000000000
|
||||
2 years 62208000000000000
|
||||
|
||||
query II
|
||||
SELECT i, epoch_us(i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 2066343400
|
||||
42 days 3628800000000
|
||||
1 year 4 months 41472000000000
|
||||
2 years 62208000000000
|
||||
|
||||
query II
|
||||
SELECT i, epoch_ms(i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 2066343
|
||||
42 days 3628800000
|
||||
1 year 4 months 41472000000
|
||||
2 years 62208000000
|
||||
|
||||
query II
|
||||
SELECT i, nanosecond(i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:34:26.3434 26343400000
|
||||
42 days 0
|
||||
1 year 4 months 0
|
||||
2 years 0
|
||||
|
||||
# Invalid parts
|
||||
|
||||
foreach datepart dow isodow doy week isoyear yearweek era timezone timezone_hour timezone_minute
|
||||
|
||||
statement error
|
||||
SELECT i, DATE_PART(['${datepart}'], i) AS parts
|
||||
FROM intervals
|
||||
ORDER BY 1;
|
||||
----
|
||||
|
||||
endloop
|
||||
201
external/duckdb/test/sql/function/interval/test_extract.test
vendored
Normal file
201
external/duckdb/test/sql/function/interval/test_extract.test
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
# name: test/sql/function/interval/test_extract.test
|
||||
# description: Extract function
|
||||
# group: [interval]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE intervals(i INTERVAL);
|
||||
|
||||
statement ok
|
||||
INSERT INTO intervals VALUES ('2 years'), ('16 months'), ('42 days'), ('2066343400 microseconds'), (NULL);
|
||||
|
||||
# extract various parts of the intervals
|
||||
query I
|
||||
SELECT EXTRACT(year FROM i) FROM intervals
|
||||
----
|
||||
2
|
||||
1
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(month FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(day FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
42
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(decade FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(century FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(quarter FROM i) FROM intervals
|
||||
----
|
||||
1
|
||||
2
|
||||
1
|
||||
1
|
||||
NULL
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(dayofweek FROM i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(isodow FROM i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(dayofyear FROM i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(week FROM i) FROM intervals
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(yearweek FROM i) FROM intervals
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(epoch FROM i) FROM intervals
|
||||
----
|
||||
63115200.0
|
||||
41925600.0
|
||||
3628800.0
|
||||
2066.3434
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(microsecond FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
26343400
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(millisecond FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
26343
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(second FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
26
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(minute FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
34
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(hour FROM i) FROM intervals
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
# negative intervals with months are strange in Postgres
|
||||
query I
|
||||
SELECT EXTRACT(year FROM interval '14 months ago')
|
||||
----
|
||||
-1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(month FROM interval '14 months ago')
|
||||
----
|
||||
-2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(day FROM interval '157 days ago')
|
||||
----
|
||||
-157
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(decade FROM interval '140 months ago')
|
||||
----
|
||||
-1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(century FROM interval '1400 months ago')
|
||||
----
|
||||
-1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(millennium FROM interval '14000 months ago')
|
||||
----
|
||||
-1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(quarter FROM interval '14 months ago')
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(quarter FROM interval '21 months ago')
|
||||
----
|
||||
-2
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(epoch FROM interval '6 months ago')
|
||||
----
|
||||
-15552000
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(doy FROM interval '6 months ago')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(dow FROM interval '6 months ago')
|
||||
----
|
||||
100
external/duckdb/test/sql/function/interval/test_interval_muldiv.test
vendored
Normal file
100
external/duckdb/test/sql/function/interval/test_interval_muldiv.test
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
# name: test/sql/function/interval/test_interval_muldiv.test
|
||||
# description: Test PG INTERVAL DOUBLE multiply and divide.
|
||||
# group: [interval]
|
||||
|
||||
# From src/test/regress/sql/interval.sql
|
||||
# Test multiplication and division with intervals.
|
||||
# Floating point arithmetic rounding errors can lead to unexpected results,
|
||||
# though the code attempts to do the right thing and round up to days and
|
||||
# minutes to avoid results such as '3 days 24:00 hours' or '14:20:60'.
|
||||
# Note that it is expected for some day components to be greater than 29 and
|
||||
# some time components be greater than 23:59:59 due to how intervals are
|
||||
# stored internally.
|
||||
statement ok
|
||||
CREATE TABLE INTERVAL_MULDIV_TBL (span interval);
|
||||
|
||||
statement ok
|
||||
INSERT INTO INTERVAL_MULDIV_TBL VALUES
|
||||
('41 months 12 days 360:00'),
|
||||
('-41 months -12 days 360:00'),
|
||||
('-12 days'),
|
||||
('9 months -27 days 12:34:56'),
|
||||
('-3 years 482 days 76:54:32.189'),
|
||||
('4 months'),
|
||||
('14 months'),
|
||||
('999 months 999 days'),
|
||||
;
|
||||
|
||||
query I
|
||||
SELECT span * 0.3 AS product
|
||||
FROM INTERVAL_MULDIV_TBL;
|
||||
----
|
||||
1 year 12 days 122:24:00
|
||||
-1 year -12 days 93:36:00
|
||||
-3 days -14:24:00
|
||||
2 months 13 days 01:22:28.8
|
||||
-10 months 120 days 37:28:21.6567
|
||||
1 month 6 days
|
||||
4 months 6 days
|
||||
24 years 11 months 320 days 16:48:00
|
||||
|
||||
query I
|
||||
SELECT span * 8.2 AS product
|
||||
FROM INTERVAL_MULDIV_TBL;
|
||||
----
|
||||
28 years 104 days 2961:36:00
|
||||
-28 years -104 days 2942:24:00
|
||||
-98 days -09:36:00
|
||||
6 years 1 month -197 days 93:34:27.2
|
||||
-24 years -7 months 3946 days 640:15:11.9498
|
||||
2 years 8 months 24 days
|
||||
9 years 6 months 24 days
|
||||
682 years 7 months 8215 days 19:12:00
|
||||
|
||||
query I
|
||||
SELECT span / 10 AS quotient
|
||||
FROM INTERVAL_MULDIV_TBL;
|
||||
----
|
||||
4 months 4 days 40:48:00
|
||||
-4 months -4 days 31:12:00
|
||||
-1 day -04:48:00
|
||||
25 days -15:32:30.4
|
||||
-3 months 30 days 12:29:27.2189
|
||||
12 days
|
||||
1 month 12 days
|
||||
8 years 3 months 126 days 21:36:00
|
||||
|
||||
query I
|
||||
SELECT span / 100 AS quotient
|
||||
FROM INTERVAL_MULDIV_TBL;
|
||||
----
|
||||
12 days 13:40:48
|
||||
-12 days -06:28:48
|
||||
-02:52:48
|
||||
2 days 10:26:44.96
|
||||
-6 days 01:14:56.72189
|
||||
1 day 04:48:00
|
||||
4 days 04:48:00
|
||||
9 months 39 days 16:33:36
|
||||
|
||||
# Commutativity
|
||||
query I
|
||||
select (interval '1 days') * 0.5::DOUBLE;
|
||||
----
|
||||
12:00:00
|
||||
|
||||
query I
|
||||
select 0.5::DOUBLE * (interval '1 days');
|
||||
----
|
||||
12:00:00
|
||||
|
||||
query I
|
||||
select 2::BIGINT * (interval '1 days');
|
||||
----
|
||||
2 days
|
||||
|
||||
query I
|
||||
select (interval '1 days') * 2::BIGINT;
|
||||
----
|
||||
2 days
|
||||
|
||||
491
external/duckdb/test/sql/function/interval/test_interval_trunc.test
vendored
Normal file
491
external/duckdb/test/sql/function/interval/test_interval_trunc.test
vendored
Normal file
@@ -0,0 +1,491 @@
|
||||
# name: test/sql/function/interval/test_interval_trunc.test
|
||||
# description: Extract function
|
||||
# group: [interval]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE intervals(i INTERVAL, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO intervals VALUES
|
||||
('1247 years 4 months', 'millennium'),
|
||||
('-1448 years -5 months', 'millennium'),
|
||||
('548 years 7 months', 'century'),
|
||||
('-118 years -3 months', 'century'),
|
||||
('45 years 1 months', 'decade'),
|
||||
('-97 years -11 months', 'decade'),
|
||||
('5 years 6 months', 'year'),
|
||||
('-4 years -8 months', 'year'),
|
||||
('2 years 2 months', 'quarter'),
|
||||
('-3 years -10 months', 'quarter'),
|
||||
('3 years 4 months 5 days', 'month'),
|
||||
('-7 years -3 months 29 days', 'month'),
|
||||
('4 months 22 days', 'week'),
|
||||
('-3 months -3 days', 'week'),
|
||||
('5 months 7 days 12:34:56.789012', 'day'),
|
||||
('-3 months -3 days 12:34:56.789012', 'day'),
|
||||
('1 month 11 days 12:34:56.789012', 'hour'),
|
||||
('-1 month -2 days 12:34:56.789012', 'hour'),
|
||||
('1 month 16 days 12:34:56.789012', 'minute'),
|
||||
('-1 month -9 days 12:34:56.789012', 'minute'),
|
||||
('1 month 24 days 12:34:56.789012', 'second'),
|
||||
('-1 month -17 days 12:34:56.789012', 'second'),
|
||||
('1 month 29 days 12:34:56.789012', 'milliseconds'),
|
||||
('-1 month -26 days 12:34:56.789012', 'milliseconds'),
|
||||
('1 month 7 days 12:34:56.789012', 'microseconds'),
|
||||
('-1 month -29 days 12:34:56.789012', 'microseconds'),
|
||||
(NULL, NULL),
|
||||
;
|
||||
|
||||
query I
|
||||
SELECT i FROM intervals;
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:34:56.789012
|
||||
-3 months -3 days 12:34:56.789012
|
||||
1 month 11 days 12:34:56.789012
|
||||
-1 month -2 days 12:34:56.789012
|
||||
1 month 16 days 12:34:56.789012
|
||||
-1 month -9 days 12:34:56.789012
|
||||
1 month 24 days 12:34:56.789012
|
||||
-1 month -17 days 12:34:56.789012
|
||||
1 month 29 days 12:34:56.789012
|
||||
-1 month -26 days 12:34:56.789012
|
||||
1 month 7 days 12:34:56.789012
|
||||
-1 month -29 days 12:34:56.789012
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('millennium', i) FROM intervals
|
||||
----
|
||||
1000 years
|
||||
-1000 years
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('century', i) FROM intervals
|
||||
----
|
||||
1200 years
|
||||
-1400 years
|
||||
500 years
|
||||
-100 years
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('decade', i) FROM intervals
|
||||
----
|
||||
1240 years
|
||||
-1440 years
|
||||
540 years
|
||||
-110 years
|
||||
40 years
|
||||
-90 years
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
NULL
|
||||
|
||||
foreach datepart year isoyear
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('${datepart}', i) FROM intervals
|
||||
----
|
||||
1247 years
|
||||
-1448 years
|
||||
548 years
|
||||
-118 years
|
||||
45 years
|
||||
-97 years
|
||||
5 years
|
||||
-4 years
|
||||
2 years
|
||||
-3 years
|
||||
3 years
|
||||
-7 years
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
00:00:00
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
foreach datepart week yearweek
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('${datepart}', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months
|
||||
-7 years -3 months 28 days
|
||||
4 months 21 days
|
||||
-3 months
|
||||
5 months 7 days
|
||||
-3 months
|
||||
1 month 7 days
|
||||
-1 month
|
||||
1 month 14 days
|
||||
-1 month -7 days
|
||||
1 month 21 days
|
||||
-1 month -14 days
|
||||
1 month 28 days
|
||||
-1 month -21 days
|
||||
1 month 7 days
|
||||
-1 month -28 days
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
foreach datepart dayofmonth dayofweek isodow dayofyear
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('${datepart}', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days
|
||||
-3 months -3 days
|
||||
1 month 11 days
|
||||
-1 month -2 days
|
||||
1 month 16 days
|
||||
-1 month -9 days
|
||||
1 month 24 days
|
||||
-1 month -17 days
|
||||
1 month 29 days
|
||||
-1 month -26 days
|
||||
1 month 7 days
|
||||
-1 month -29 days
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('hour', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:00:00
|
||||
-3 months -3 days 12:00:00
|
||||
1 month 11 days 12:00:00
|
||||
-1 month -2 days 12:00:00
|
||||
1 month 16 days 12:00:00
|
||||
-1 month -9 days 12:00:00
|
||||
1 month 24 days 12:00:00
|
||||
-1 month -17 days 12:00:00
|
||||
1 month 29 days 12:00:00
|
||||
-1 month -26 days 12:00:00
|
||||
1 month 7 days 12:00:00
|
||||
-1 month -29 days 12:00:00
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('minute', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:34:00
|
||||
-3 months -3 days 12:34:00
|
||||
1 month 11 days 12:34:00
|
||||
-1 month -2 days 12:34:00
|
||||
1 month 16 days 12:34:00
|
||||
-1 month -9 days 12:34:00
|
||||
1 month 24 days 12:34:00
|
||||
-1 month -17 days 12:34:00
|
||||
1 month 29 days 12:34:00
|
||||
-1 month -26 days 12:34:00
|
||||
1 month 7 days 12:34:00
|
||||
-1 month -29 days 12:34:00
|
||||
NULL
|
||||
|
||||
foreach datepart second epoch
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('${datepart}', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:34:56
|
||||
-3 months -3 days 12:34:56
|
||||
1 month 11 days 12:34:56
|
||||
-1 month -2 days 12:34:56
|
||||
1 month 16 days 12:34:56
|
||||
-1 month -9 days 12:34:56
|
||||
1 month 24 days 12:34:56
|
||||
-1 month -17 days 12:34:56
|
||||
1 month 29 days 12:34:56
|
||||
-1 month -26 days 12:34:56
|
||||
1 month 7 days 12:34:56
|
||||
-1 month -29 days 12:34:56
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('millisecond', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:34:56.789
|
||||
-3 months -3 days 12:34:56.789
|
||||
1 month 11 days 12:34:56.789
|
||||
-1 month -2 days 12:34:56.789
|
||||
1 month 16 days 12:34:56.789
|
||||
-1 month -9 days 12:34:56.789
|
||||
1 month 24 days 12:34:56.789
|
||||
-1 month -17 days 12:34:56.789
|
||||
1 month 29 days 12:34:56.789
|
||||
-1 month -26 days 12:34:56.789
|
||||
1 month 7 days 12:34:56.789
|
||||
-1 month -29 days 12:34:56.789
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT DATE_TRUNC('microsecond', i) FROM intervals
|
||||
----
|
||||
1247 years 4 months
|
||||
-1448 years -5 months
|
||||
548 years 7 months
|
||||
-118 years -3 months
|
||||
45 years 1 month
|
||||
-97 years -11 months
|
||||
5 years 6 months
|
||||
-4 years -8 months
|
||||
2 years 2 months
|
||||
-3 years -10 months
|
||||
3 years 4 months 5 days
|
||||
-7 years -3 months 29 days
|
||||
4 months 22 days
|
||||
-3 months -3 days
|
||||
5 months 7 days 12:34:56.789012
|
||||
-3 months -3 days 12:34:56.789012
|
||||
1 month 11 days 12:34:56.789012
|
||||
-1 month -2 days 12:34:56.789012
|
||||
1 month 16 days 12:34:56.789012
|
||||
-1 month -9 days 12:34:56.789012
|
||||
1 month 24 days 12:34:56.789012
|
||||
-1 month -17 days 12:34:56.789012
|
||||
1 month 29 days 12:34:56.789012
|
||||
-1 month -26 days 12:34:56.789012
|
||||
1 month 7 days 12:34:56.789012
|
||||
-1 month -29 days 12:34:56.789012
|
||||
NULL
|
||||
|
||||
# Variable part name
|
||||
query I
|
||||
SELECT DATE_TRUNC(s, i) FROM intervals
|
||||
----
|
||||
1000 years
|
||||
-1000 years
|
||||
500 years
|
||||
-100 years
|
||||
40 years
|
||||
-90 years
|
||||
5 years
|
||||
-4 years
|
||||
2 years
|
||||
-3 years -9 months
|
||||
3 years 4 months
|
||||
-7 years -3 months
|
||||
4 months 21 days
|
||||
-3 months
|
||||
5 months 7 days
|
||||
-3 months -3 days
|
||||
1 month 11 days 12:00:00
|
||||
-1 month -2 days 12:00:00
|
||||
1 month 16 days 12:34:00
|
||||
-1 month -9 days 12:34:00
|
||||
1 month 24 days 12:34:56
|
||||
-1 month -17 days 12:34:56
|
||||
1 month 29 days 12:34:56.789
|
||||
-1 month -26 days 12:34:56.789
|
||||
1 month 7 days 12:34:56.789012
|
||||
-1 month -29 days 12:34:56.789012
|
||||
NULL
|
||||
|
||||
# NULL part name
|
||||
query I
|
||||
SELECT DATE_TRUNC(NULL, i) FROM intervals
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
|
||||
Reference in New Issue
Block a user