Files
email-tracker/external/duckdb/test/sql/function/interval/test_extract.test
2025-10-24 19:21:19 -05:00

202 lines
2.4 KiB
SQL

# 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')
----