should be it
This commit is contained in:
21
external/duckdb/test/sql/function/time/epoch.test
vendored
Normal file
21
external/duckdb/test/sql/function/time/epoch.test
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# name: test/sql/function/time/epoch.test
|
||||
# description: Extract function
|
||||
# group: [time]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
query I
|
||||
select epoch(TIME '14:21:13')
|
||||
----
|
||||
51673
|
||||
|
||||
query I
|
||||
select extract(epoch from TIME '14:21:13')
|
||||
----
|
||||
51673
|
||||
|
||||
query I
|
||||
select extract(seconds from TIME '14:21:13')
|
||||
----
|
||||
13
|
||||
256
external/duckdb/test/sql/function/time/test_date_part.test
vendored
Normal file
256
external/duckdb/test/sql/function/time/test_date_part.test
vendored
Normal file
@@ -0,0 +1,256 @@
|
||||
# name: test/sql/function/time/test_date_part.test
|
||||
# description: DATE_PART test
|
||||
# group: [time]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE times(d TIME, s VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO times VALUES ('00:01:20', 'hour'), ('20:08:10.998', 'minute'), ('20:08:10.33', 'second'),
|
||||
('20:08:10.001', 'millisecond');
|
||||
|
||||
# test date_part with different combinations of constant/non-constant columns
|
||||
query I
|
||||
SELECT date_part(NULL::VARCHAR, NULL::TIME) FROM times;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, NULL::TIME) FROM times;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# times
|
||||
query I
|
||||
SELECT date_part(NULL, d) FROM times;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT date_part(s, TIME '14:28:50.447') FROM times;
|
||||
----
|
||||
14
|
||||
28
|
||||
50
|
||||
50447
|
||||
|
||||
query I
|
||||
SELECT date_part('hour', d) FROM times;
|
||||
----
|
||||
0
|
||||
20
|
||||
20
|
||||
20
|
||||
|
||||
query I
|
||||
SELECT date_part(s, d) FROM times;
|
||||
----
|
||||
0
|
||||
8
|
||||
10
|
||||
10001
|
||||
|
||||
foreach datepart timezone timezone_hour timezone_minute
|
||||
|
||||
query I
|
||||
select date_part('${datepart}', time '10:00:00');
|
||||
----
|
||||
0
|
||||
|
||||
endloop
|
||||
|
||||
# time gives errors for date-only parts
|
||||
statement error
|
||||
SELECT era(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT year(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT month(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT day(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT decade(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT century(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT millennium(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT quarter(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT dayofweek(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT isodow(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT dayofyear(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT week(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT yearweek(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(dow from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(doy from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(yearweek from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(century from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT era(i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(era from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select date_part('era', time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select extract(julian from time '10:00:00');
|
||||
----
|
||||
|
||||
statement error
|
||||
select date_part('julian', time '10:00:00');
|
||||
----
|
||||
|
||||
# Correctness: Compare date_part against function value
|
||||
foreach partcode hour minute second millisecond microsecond epoch
|
||||
|
||||
query III
|
||||
SELECT * FROM (
|
||||
SELECT d, DATE_PART('${partcode}', d) AS p, ${partcode}(d) AS f
|
||||
FROM times
|
||||
) tbl
|
||||
WHERE p <> f;
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
#
|
||||
# Structs
|
||||
#
|
||||
|
||||
# Correctness: Compare against scalar extract
|
||||
foreach partcode hour minute second millisecond microsecond epoch timezone timezone_hour timezone_minute
|
||||
|
||||
query III
|
||||
SELECT d, DATE_PART('${partcode}', d) AS p, DATE_PART(['${partcode}'], d) AS st
|
||||
FROM times
|
||||
WHERE p <> st['${partcode}'];
|
||||
----
|
||||
|
||||
endloop
|
||||
|
||||
# Time parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['hour', 'minute', 'microsecond'], d) AS parts
|
||||
FROM times
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:01:20 {'hour': 0, 'minute': 1, 'microsecond': 20000000}
|
||||
20:08:10.001 {'hour': 20, 'minute': 8, 'microsecond': 10001000}
|
||||
20:08:10.33 {'hour': 20, 'minute': 8, 'microsecond': 10330000}
|
||||
20:08:10.998 {'hour': 20, 'minute': 8, 'microsecond': 10998000}
|
||||
|
||||
# Miscellaneous parts
|
||||
query II
|
||||
SELECT d, DATE_PART(['epoch', 'second', 'timezone', 'timezone_hour', 'timezone_minute'], d) AS parts
|
||||
FROM times
|
||||
ORDER BY 1;
|
||||
----
|
||||
00:01:20 {'epoch': 80.0, 'second': 20, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
|
||||
20:08:10.001 {'epoch': 72490.001, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
|
||||
20:08:10.33 {'epoch': 72490.33, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
|
||||
20:08:10.998 {'epoch': 72490.998, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
|
||||
|
||||
# Function-only parts
|
||||
query II
|
||||
SELECT d, epoch_ns(d) FROM times ORDER BY ALL;
|
||||
----
|
||||
00:01:20 80000000000
|
||||
20:08:10.001 72490001000000
|
||||
20:08:10.33 72490330000000
|
||||
20:08:10.998 72490998000000
|
||||
|
||||
query II
|
||||
SELECT d, epoch_us(d) FROM times ORDER BY ALL;
|
||||
----
|
||||
00:01:20 80000000
|
||||
20:08:10.001 72490001000
|
||||
20:08:10.33 72490330000
|
||||
20:08:10.998 72490998000
|
||||
|
||||
query II
|
||||
SELECT d, epoch_ms(d) FROM times ORDER BY ALL;
|
||||
----
|
||||
00:01:20 80000
|
||||
20:08:10.001 72490001
|
||||
20:08:10.33 72490330
|
||||
20:08:10.998 72490998
|
||||
|
||||
query II
|
||||
SELECT d, nanosecond(d) FROM times ORDER BY ALL;
|
||||
----
|
||||
00:01:20 20000000000
|
||||
20:08:10.001 10001000000
|
||||
20:08:10.33 10330000000
|
||||
20:08:10.998 10998000000
|
||||
|
||||
# Invalid parts
|
||||
|
||||
foreach datepart year month day decade century millennium quarter dow isodow doy week isoyear yearweek era julian
|
||||
|
||||
statement error
|
||||
SELECT d, DATE_PART(['${datepart}'], d) AS parts
|
||||
FROM times
|
||||
ORDER BY 1;
|
||||
----
|
||||
|
||||
endloop
|
||||
116
external/duckdb/test/sql/function/time/test_extract.test
vendored
Normal file
116
external/duckdb/test/sql/function/time/test_extract.test
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
# name: test/sql/function/time/test_extract.test
|
||||
# description: Extract function
|
||||
# group: [time]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE times(i TIME)
|
||||
|
||||
statement ok
|
||||
INSERT INTO times VALUES ('00:01:20'), ('20:08:10.998'), ('20:08:10.33'), ('20:08:10.001'), (NULL)
|
||||
|
||||
# extract various parts of the time
|
||||
query I
|
||||
SELECT EXTRACT(second FROM i) FROM times
|
||||
----
|
||||
20
|
||||
10
|
||||
10
|
||||
10
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(minute FROM i) FROM times
|
||||
----
|
||||
1
|
||||
8
|
||||
8
|
||||
8
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(hour FROM i) FROM times
|
||||
----
|
||||
0
|
||||
20
|
||||
20
|
||||
20
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(milliseconds FROM i) FROM times
|
||||
----
|
||||
20000
|
||||
10998
|
||||
10330
|
||||
10001
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(microseconds FROM i) FROM times
|
||||
----
|
||||
20000000
|
||||
10998000
|
||||
10330000
|
||||
10001000
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT EXTRACT(epoch FROM i) FROM times
|
||||
----
|
||||
80
|
||||
72490
|
||||
72490
|
||||
72490
|
||||
NULL
|
||||
|
||||
# time gives errors for date-only parts
|
||||
statement error
|
||||
SELECT EXTRACT(year FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(month FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(day FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(decade FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(century FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(millennium FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(quarter FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(dayofweek FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(isodow FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(dayofyear FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(week FROM i) FROM times
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT EXTRACT(yearweek FROM i) FROM times
|
||||
----
|
||||
46
external/duckdb/test/sql/function/time/test_extract_stats.test
vendored
Normal file
46
external/duckdb/test/sql/function/time/test_extract_stats.test
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# name: test/sql/function/time/test_extract_stats.test
|
||||
# description: Extract function statistics
|
||||
# group: [time]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE times(i TIME)
|
||||
|
||||
statement ok
|
||||
INSERT INTO times VALUES ('00:01:20'), ('20:08:10.998'), ('20:08:10.33'), ('20:08:10.001'), (NULL)
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_verification
|
||||
|
||||
# extract various parts of the time
|
||||
query I
|
||||
SELECT stats(EXTRACT(second FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*60.*true.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(minute FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*60.*true.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(hour FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*24.*true.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(milliseconds FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*60000.*true.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(microseconds FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*60000000.*true.*
|
||||
|
||||
query I
|
||||
SELECT stats(EXTRACT(epoch FROM i)) FROM times LIMIT 1
|
||||
----
|
||||
<REGEX>:.*0.*86400.*true.*
|
||||
Reference in New Issue
Block a user