blob: 6fcdfc2426bc7b991087339f6fe709b743893efa [file] [log] [blame]
====
---- QUERY
# TODO: Once DATE type is supported across all fileformats, move this test to
# hdfs-scan-node.test.
select id_col, date_part, date_col from date_tbl;
---- RESULTS
0,0001-01-01,0001-01-01
1,0001-01-01,0001-12-31
2,0001-01-01,0002-01-01
3,0001-01-01,1399-12-31
4,0001-01-01,2017-11-28
5,0001-01-01,9999-12-31
6,0001-01-01,NULL
10,1399-06-27,2017-11-28
11,1399-06-27,NULL
12,1399-06-27,2018-12-31
20,2017-11-27,0001-06-21
21,2017-11-27,0001-06-22
22,2017-11-27,0001-06-23
23,2017-11-27,0001-06-24
24,2017-11-27,0001-06-25
25,2017-11-27,0001-06-26
26,2017-11-27,0001-06-27
27,2017-11-27,0001-06-28
28,2017-11-27,0001-06-29
29,2017-11-27,2017-11-28
30,9999-12-31,9999-12-01
31,9999-12-31,9999-12-31
---- TYPES
INT,DATE,DATE
====
---- QUERY
# TODO: Once DATE type is supported across all fileformats, move these tests to
# exprs.test.
select count(*) from date_tbl
where '2017-11-28' in (date_col)
---- RESULTS
3
---- TYPES
bigint
====
---- QUERY
select count(*) from date_tbl
where date_col in ('2017-11-28', '0001-1-1', DATE '9999-12-31', '0001-06-25',
DATE '0001-6-23', '2018-12-31', '0001-01-01', '2018-12-31')
---- RESULTS
9
---- TYPES
bigint
====
---- QUERY
select count(*) from date_tbl
where '2017-11-28' not in (date_col)
---- RESULTS
17
---- TYPES
bigint
====
---- QUERY
select count(*) from date_tbl
where date_col not in ('2017-11-28', '0001-1-1', DATE '9999-12-31', '0001-06-25',
DATE '0001-6-23', '2018-12-31', '0001-01-01', '2018-12-31')
---- RESULTS
11
---- TYPES
bigint
====
---- QUERY
select date_col, count(*) from date_tbl where case date_col
when '2017-11-28' then "true"
else "false" end = "true" group by 1
---- RESULTS
2017-11-28,3
---- TYPES
DATE, BIGINT
====
---- QUERY
select count(*) from date_tbl where date_col
between '2017-11-28' and '2017-11-28'
---- RESULTS
3
---- TYPES
bigint
====
---- QUERY
select count(*) from date_tbl where date_col
not between '2017-11-28' and '2017-11-28'
---- RESULTS
17
---- TYPES
bigint
====
---- QUERY
# Test 0001-01-01 date handling during string to date conversion.
select CAST("0001-01-01" AS DATE);
---- RESULTS
0001-01-01
---- TYPES
DATE
====
---- QUERY
# Test < 0001 date handling during string to date conversion.
select CAST("0000-01-01" AS DATE);
---- CATCH
UDF ERROR: String to Date parse failed. Invalid string val: '0000-01-01'
====
---- QUERY
# Test <1400 date handling during string to date conversion.
select CAST("1399-12-31" AS DATE);
---- RESULTS
1399-12-31
---- TYPES
DATE
====
---- QUERY
# Test >=10000 date handling during string to date conversion.
select CAST("10000-01-01" AS DATE);
---- CATCH
UDF ERROR: String to Date parse failed. Invalid string val: '10000-01-01'
====
---- QUERY
# Test leap year checking during string to date conversion.
select CAST("1900-02-29" AS DATE);
---- CATCH
UDF ERROR: String to Date parse failed. Invalid string val: '1900-02-29'
====
---- QUERY
# Test invalid format handling during string to date conversion.
select CAST("not a date" AS DATE);
---- CATCH
UDF ERROR: String to Date parse failed. Invalid string val: 'not a date'
====
---- QUERY
# Test 0001-01-01 and 9999-12-31 date literal
select DATE "0001-01-01", DATE '9999-12-31';
---- RESULTS
0001-01-01,9999-12-31
---- TYPES
DATE,DATE
====
---- QUERY
# Test < 0001 date literal.
select DATE "0000-01-01";
---- CATCH
AnalysisException: Invalid date literal: '0000-01-01'
====
---- QUERY
# Test >=10000 date literal.
select DATE "10000-01-01";
---- CATCH
AnalysisException: Invalid date literal: '10000-01-01'
====
---- QUERY
# Test invalid dare literal
select DATE "not a date";
---- CATCH
AnalysisException: Invalid date literal: 'not a date'
====
---- QUERY
# Test leap year checking in date literal
select DATE "1900-02-29";
---- CATCH
AnalysisException: Invalid date literal: '1900-02-29'
---- TYPES
DATE
====
---- QUERY
select murmur_hash(date_col), murmur_hash(date_part) from date_tbl;
---- RESULTS
-232951748055606586,7040505807414357930
-3732010091053269412,7040505807414357930
-3974699570613064843,-603226120891050888
-7063415310100391105,1363129737749198513
-7676893653355904113,-603226120891050888
1274392552456687587,-603226120891050888
232326618821724181,-603226120891050888
2388222541326638441,6952609697003645459
2741588585509081281,-603226120891050888
335637154849784215,-603226120891050888
335637154849784215,1363129737749198513
335637154849784215,7040505807414357930
4285738516310795057,-603226120891050888
5184255335234340452,-603226120891050888
5446911420184118521,-603226120891050888
6701568911426106324,-603226120891050888
6952609697003645459,6952609697003645459
6952609697003645459,7040505807414357930
7040505807414357930,7040505807414357930
7846901255014371649,7040505807414357930
NULL,1363129737749198513
NULL,7040505807414357930
---- TYPES
BIGINT, BIGINT
====
---- QUERY
# Test support for non zero-padded date strings cast as date
select cast('2001-1-21' as date), cast('2001-1-2' as date)
---- RESULTS
2001-01-21,2001-01-02
---- TYPES
DATE,DATE
====
---- QUERY
# Test support for non zero-padded date literals
select date '2001-1-21', date '2001-1-2'
---- RESULTS
2001-01-21,2001-01-02
---- TYPES
DATE,DATE
====
---- QUERY
# Test that casts are not allowed between DATE and numerical types
select cast(date '2000-12-21' as int);
---- CATCH
AnalysisException: Invalid type cast of DATE '2000-12-21' from DATE to INT
====
---- QUERY
select cast(123.45 as date);
---- CATCH
AnalysisException: Invalid type cast of 123.45 from DECIMAL(5,2) to DATE
====
---- QUERY
select count(*) from date_tbl where date_col <= '1399-12-31';
---- RESULTS
13
---- TYPES
BIGINT
====
---- QUERY
select count(*), count(date_part), count(date_col),
count(distinct date_part), count(distinct date_col)
from date_tbl;
---- RESULTS
22,22,20,4,17
---- TYPES
BIGINT,BIGINT,BIGINT,BIGINT,BIGINT
====
---- QUERY
select date_part, count(date_col) from date_tbl group by date_part;
---- RESULTS
2017-11-27,10
1399-06-27,2
9999-12-31,2
0001-01-01,6
---- TYPES
DATE, BIGINT
====
---- QUERY
select id_col, date_part, date_col from date_tbl where date_col = '1399-12-31';
---- RESULTS
3,0001-01-01,1399-12-31
---- TYPES
INT,DATE,DATE
====
---- QUERY
select count(*) from date_tbl where date_col != '1399-12-31';
---- RESULTS
19
---- TYPES
BIGINT
====
---- QUERY
select count(*) from date_tbl where date_col = date_part;
---- RESULTS
2
---- TYPES
BIGINT
====
---- QUERY
select min(date_part), max(date_part), min(date_col), max(date_col) from date_tbl;
---- RESULTS
0001-01-01,9999-12-31,0001-01-01,9999-12-31
---- TYPES
DATE, DATE, DATE, DATE
====
---- QUERY
select date_part, min(date_col), max(date_col) from date_tbl group by date_part;
---- RESULTS
2017-11-27,0001-06-21,2017-11-28
1399-06-27,2017-11-28,2018-12-31
9999-12-31,9999-12-01,9999-12-31
0001-01-01,0001-01-01,9999-12-31
---- TYPES
DATE, DATE, DATE
====
---- QUERY
select date_part, count(*) from date_tbl group by date_part;
---- RESULTS
2017-11-27,10
1399-06-27,3
9999-12-31,2
0001-01-01,7
---- TYPES
DATE, BIGINT
====
---- QUERY
select date_col, count(date_part) from date_tbl group by date_col;
---- RESULTS
0001-06-29,1
0002-01-01,1
0001-06-27,1
0001-06-25,1
1399-12-31,1
0001-06-23,1
9999-12-31,2
0001-12-31,1
0001-06-21,1
9999-12-01,1
2018-12-31,1
0001-06-26,1
2017-11-28,3
0001-06-28,1
0001-06-22,1
0001-01-01,1
0001-06-24,1
NULL,2
---- TYPES
DATE, BIGINT
====
---- QUERY
select date_part, max(date_col) from date_tbl group by date_part
having max(date_col) > '2017-11-29';
---- RESULTS
1399-06-27,2018-12-31
9999-12-31,9999-12-31
0001-01-01,9999-12-31
---- TYPES
DATE,DATE
====
---- QUERY
select ndv(date_col), distinctpc(date_col),
distinctpcsa(date_col), count(distinct date_col)
from date_tbl;
---- RESULTS
16,13,14,17
---- TYPES
BIGINT,BIGINT,BIGINT,BIGINT
====
---- QUERY
select ndv(date_part), ndv(date_col) from date_tbl;
---- RESULTS
4,16
---- TYPES
BIGINT,BIGINT
====
---- QUERY
select date_part, ndv(date_col) from date_tbl group by date_part;
---- RESULTS
2017-11-27,9
1399-06-27,2
9999-12-31,2
0001-01-01,6
---- TYPES
DATE, BIGINT
====
---- QUERY
select date_col, date_part from date_tbl order by 1, 2 limit 5;
---- RESULTS
0001-01-01,0001-01-01
0001-06-21,2017-11-27
0001-06-22,2017-11-27
0001-06-23,2017-11-27
0001-06-24,2017-11-27
---- TYPES
DATE,DATE
====
---- QUERY
select date_col, date_part from date_tbl order by 1 desc, 2 desc limit 5;
---- RESULTS
NULL,1399-06-27
NULL,0001-01-01
9999-12-31,9999-12-31
9999-12-31,0001-01-01
9999-12-01,9999-12-31
---- TYPES
DATE,DATE
====
---- QUERY
select t1.*, t2.* from date_tbl t1
join date_tbl t2
on t1.date_col = t2.date_col
order by t1.date_col desc, t1.date_part desc, t2.date_part desc limit 5;
---- RESULTS
31,9999-12-31,9999-12-31,31,9999-12-31,9999-12-31
31,9999-12-31,9999-12-31,5,9999-12-31,0001-01-01
5,9999-12-31,0001-01-01,31,9999-12-31,9999-12-31
5,9999-12-31,0001-01-01,5,9999-12-31,0001-01-01
30,9999-12-01,9999-12-31,30,9999-12-01,9999-12-31
---- TYPES
INT,DATE,DATE,INT,DATE,DATE
====
---- QUERY
select a.date_col from date_tbl a left semi join date_tbl b on a.date_col = b.date_part;
---- RESULTS
0001-01-01
9999-12-31
9999-12-31
---- TYPES
DATE
====
---- QUERY
select first_value(date_col)
over (order by date_part, date_col rows between 2 preceding and current row)
from date_tbl;
---- RESULTS
0001-01-01
0001-01-01
0001-01-01
0001-12-31
0002-01-01
1399-12-31
2017-11-28
9999-12-31
NULL
2017-11-28
2018-12-31
NULL
0001-06-21
0001-06-22
0001-06-23
0001-06-24
0001-06-25
0001-06-26
0001-06-27
0001-06-28
0001-06-29
2017-11-28
---- TYPES
DATE
====
---- QUERY
select histogram(date_col) from date_tbl;
---- RESULTS
'0001-01-01, 0001-06-21, 0001-06-22, 0001-06-23, 0001-06-24, 0001-06-25, 0001-06-26, 0001-06-27, 0001-06-28, 0001-06-29, 0001-12-31, 0002-01-01, 1399-12-31, 2017-11-28, 2017-11-28, 2017-11-28, 2018-12-31, 9999-12-01, 9999-12-31, 9999-12-31'
---- TYPES
STRING
====
---- QUERY
select appx_median(date_part), appx_median(date_col) from date_tbl;
---- RESULTS
2017-11-27,0001-12-31
---- TYPES
DATE, DATE
====
---- QUERY
select sample(date_col) from date_tbl;
---- TYPES
# Results are unstable, just check that this doesn't crash
STRING
====
---- QUERY
select lag(date_col, 1) over (order by date_col, date_part) as d, date_col, date_part
from date_tbl
order by date_col, date_part;
---- RESULTS
NULL,0001-01-01,0001-01-01
0001-01-01,0001-06-21,2017-11-27
0001-06-21,0001-06-22,2017-11-27
0001-06-22,0001-06-23,2017-11-27
0001-06-23,0001-06-24,2017-11-27
0001-06-24,0001-06-25,2017-11-27
0001-06-25,0001-06-26,2017-11-27
0001-06-26,0001-06-27,2017-11-27
0001-06-27,0001-06-28,2017-11-27
0001-06-28,0001-06-29,2017-11-27
0001-06-29,0001-12-31,0001-01-01
0001-12-31,0002-01-01,0001-01-01
0002-01-01,1399-12-31,0001-01-01
1399-12-31,2017-11-28,0001-01-01
2017-11-28,2017-11-28,1399-06-27
2017-11-28,2017-11-28,2017-11-27
2017-11-28,2018-12-31,1399-06-27
2018-12-31,9999-12-01,9999-12-31
9999-12-01,9999-12-31,0001-01-01
9999-12-31,9999-12-31,9999-12-31
9999-12-31,NULL,0001-01-01
NULL,NULL,1399-06-27
---- TYPES
DATE, DATE, DATE
====
---- QUERY
# Query return mixed NULL and non-NULL date values.
select rn,
case when rn % 2 = 0 then date_part end,
case when rn % 3 = 0 then date_col end
from (
select *, row_number() over (order by date_col, date_part) rn
from date_tbl) v;
---- RESULTS
1,NULL,NULL
2,2017-11-27,NULL
3,NULL,0001-06-22
4,2017-11-27,NULL
5,NULL,NULL
6,2017-11-27,0001-06-25
7,NULL,NULL
8,2017-11-27,NULL
9,NULL,0001-06-28
10,2017-11-27,NULL
11,NULL,NULL
12,0001-01-01,0002-01-01
13,NULL,NULL
14,0001-01-01,NULL
15,NULL,2017-11-28
16,2017-11-27,NULL
17,NULL,NULL
18,9999-12-31,9999-12-01
19,NULL,NULL
20,9999-12-31,NULL
21,NULL,NULL
22,1399-06-27,NULL
---- TYPES
BIGINT, DATE, DATE
====
---- QUERY
# TODO: Once DATE type is supported across all fileformats move these tests to join.test.
select a.date_col from date_tbl a inner join date_tbl b on
(a.date_col = b.date_col)
where a.date_part = '2017-11-27';
---- RESULTS
0001-06-21
0001-06-24
0001-06-26
0001-06-27
0001-06-22
0001-06-25
0001-06-28
2017-11-28
2017-11-28
0001-06-23
0001-06-29
2017-11-28
---- TYPES
DATE
====
---- QUERY
# Implicit conversion tests.
# Impala returns the same results as Hive 3.1.
select cast('2012-01-01' as date) in ('2012-01-01 00:00:00'),
cast('2012-01-01' as date) = '2012-01-01 00:00:00',
'2012-01-01 00:00:00' = cast('2012-01-01' as date),
cast('2012-01-01' as date) in ('2012-01-01 00:00:01'),
cast('2012-01-01' as date) = '2012-01-01 00:00:01',
'2012-01-01 00:00:01' = cast('2012-01-01' as date),
cast('2012-01-01' as date) in (cast('2012-01-01 00:00:00' as timestamp)),
cast('2012-01-01' as date) in (cast('2012-01-01 00:00:01' as timestamp)),
cast('2012-01-01 00:00:00' as timestamp) in ('2012-01-01'),
cast('2012-01-01 00:00:01' as timestamp) in ('2012-01-01'),
cast('2012-01-01 00:00:01' as string) = cast('2012-01-01' as date),
cast('2012-01-01 00:00:01' as timestamp) = cast('2012-01-01' as date),
cast('2012-01-01 00:00:00' as timestamp) = cast('2012-01-01' as date);
---- RESULTS
true,true,true,true,true,true,true,false,true,false,true,false,true
---- TYPES
BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN
====
---- QUERY
# Impala returns the same results as Hive 3.1.
select coalesce(null, cast('2012-02-02' as timestamp), cast('2012-02-02' as timestamp)),
coalesce(cast('2012-01-01' as date), cast('2012-02-02' as timestamp), cast('2012-02-02' as timestamp)),
if(false, cast('2011-01-01 01:01:01' as timestamp), DATE '1499-02-02'),
cast('2012-01-01 01:01:01' as date),
cast('2012-1-1' as date);
---- RESULTS
2012-02-02 00:00:00,2012-01-01 00:00:00,1499-02-02 00:00:00,2012-01-01,2012-01-01
---- TYPES
TIMESTAMP,TIMESTAMP,TIMESTAMP,DATE,DATE
====
---- QUERY
# Impala returns the same results as PostgreSQL.
select coalesce('2012-01-01', cast('2012-02-02' as timestamp), cast('2012-02-02' as timestamp)),
coalesce('2012-01-01', cast('2012-02-02' as date), cast('2012-02-02' as timestamp));
---- RESULTS
2012-01-01 00:00:00,2012-01-01 00:00:00
---- TYPES
TIMESTAMP,TIMESTAMP
====
---- QUERY
# Test that conversion fails because function call resolves to YEAR(TIMESTAMP).
select year('0009-02-15');
---- RESULTS
NULL
---- TYPES
INT
====
---- QUERY
# Test that invalid casts fail with the right error.
# DATE->TIMESTAMP conversion fails because date is out of the valid range.
select cast(date '1399-12-31' as timestamp);
---- CATCH
UDF ERROR: Date to Timestamp conversion failed. The valid date range for the Timestamp type is 1400-01-01..9999-12-31.
====
---- QUERY
# STRING->DATE conversion fails because date string is invalid.
select cast('not-a-date' as date);
---- CATCH
UDF ERROR: String to Date parse failed. Invalid string val: 'not-a-date'
====
---- QUERY
# Basic test for FORMAT clause in CAST().
select cast("2014-11-01" as date format "YYYY-MM-DD");
---- RESULTS
2014-11-01
---- TYPES
DATE
====
---- QUERY
# Shuffle the pattern elements in the input.
select cast("02-11-2014" as date format "dd-mm-yyyy");
---- RESULTS
2014-11-02
---- TYPES
DATE
====
---- QUERY
# Don't accept time tokens for date when format is provided.
select cast("2014-11-03 10" as date format "YYYY-MM-DD HH12");
---- CATCH
PARSE ERROR: Time tokens provided with date type.
====
---- QUERY
# Input doesn't match the format.
select cast("2014-11-04" as date format "MM-DD-YYYY");
---- CATCH
UDF ERROR: String to Date parse failed.
====
---- QUERY
# Interchangeability of separators.
select cast("2014/11/05" as date format "YYYY-MM-DD");
---- RESULTS
2014-11-05
---- TYPES
DATE
====
---- QUERY
select cast("2014/- ,11'/:-05" as date format "YYYY-MM-DD");
---- RESULTS
2014-11-05
---- TYPES
DATE
====
---- QUERY
# Day of year tests.
select cast("2014 001" as date format "YYYY DDD");
---- RESULTS
2014-01-01
---- TYPES
DATE
====
---- QUERY
select cast("365 2014" as date format "DDD-YYYY");
---- RESULTS
2014-12-31
---- TYPES
DATE
====
---- QUERY
select cast("366 2014" as date format "DDD-YYYY");
---- CATCH
UDF ERROR: String to Date parse failed.
====
---- QUERY
# Leap year with day of year token.
select cast("2000-366" as date format "YYYY DDD");
---- RESULTS
2000-12-31
---- TYPES
DATE
====
---- QUERY
select cast("2000 367" as date format "YYYY DDD");
---- CATCH
UDF ERROR: String to Date parse failed.
====
----QUERY
# Leap year with day of year token before 1400.
select cast('0004 100' as date format "YYYY DDD");
---- RESULTS
0004-04-09
---- TYPES
DATE
====
---- QUERY
# Test how missing year digits are filled from current year.
SET NOW_STRING="2019-01-01 11:11:11";
select cast("095-01-31" as date FORMAT "YYYY-MM-DD");
---- RESULTS
2095-01-31
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("95-01-30" as date FORMAT "YYYY-MM-DD");
---- RESULTS
2095-01-30
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("5-01-29" as date FORMAT "YYYY-MM-DD");
---- RESULTS
2015-01-29
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("95-01-28" as date FORMAT "YYY-MM-DD");
---- RESULTS
2095-01-28
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("5-01-27" as date FORMAT "YYY-MM-DD");
---- RESULTS
2015-01-27
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("5-01-26" as date FORMAT "YY-MM-DD");
---- RESULTS
2015-01-26
---- TYPES
DATE
====
---- QUERY
# RRRR with 4-digit year falls back to YYYY
SET NOW_STRING="2019-01-01 11:11:11";
select cast("2017-01-25" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2017-01-25
---- TYPES
DATE
====
---- QUERY
# RRRR with 3-digit year fills digits from current year
SET NOW_STRING="2019-01-01 11:11:11";
select cast("017-01-24" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2017-01-24
---- TYPES
DATE
====
---- QUERY
# RRRR with 1-digit year fills digits from current year
SET NOW_STRING="2019-01-01 11:11:11";
select cast("7-01-23" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2017-01-23
---- TYPES
DATE
====
---- QUERY
# RR with 1-digit year fills digits from current year
SET NOW_STRING="2019-01-01 11:11:11";
select cast("7-01-22" as date FORMAT "RR-MM-DD");
---- RESULTS
2017-01-22
---- TYPES
DATE
====
---- QUERY
# Round year when last 2 digits of current year is less than 50
SET NOW_STRING="2049-01-01 11:11:11";
select cast("49-01-21" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2049-01-21
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2049-01-01 11:11:11";
select cast("50-01-20" as date FORMAT "RRRR-MM-DD");
---- RESULTS
1950-01-20
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2000-01-01 11:11:11";
select cast("49-01-19" as date FORMAT "RR-MM-DD");
---- RESULTS
2049-01-19
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2000-01-01 11:11:11";
select cast("50-01-18" as date FORMAT "RR-MM-DD");
---- RESULTS
1950-01-18
---- TYPES
DATE
====
---- QUERY
# Round year when last 2 digits of current year is greater than 49
SET NOW_STRING="2050-01-01 11:11:11";
select cast("49-01-17" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2149-01-17
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2050-01-01 11:11:11";
select cast("50-01-16" as date FORMAT "RRRR-MM-DD");
---- RESULTS
2050-01-16
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2099-01-01 11:11:11";
select cast("49-01-15" as date FORMAT "RR-MM-DD");
---- RESULTS
2149-01-15
---- TYPES
DATE
====
---- QUERY
SET NOW_STRING="2099-01-01 11:11:11";
select cast("50-01-14" as date FORMAT "RR-MM-DD");
---- RESULTS
2050-01-14
---- TYPES
DATE
====
---- QUERY
# In a date to string cast round year act like regular 'YYYY' or 'YY' tokens.
# select date_col from date_tbl where id_col = 4;
# 2017-11-28
select cast(date_col as string format "RRRR RR") from date_tbl where id_col = 4;
---- RESULTS
'2017 17'
---- TYPES
STRING
====
---- QUERY
# Date to string conversion using all but round year tokens.
select cast(date_col as string format "YYYY YYY YY Y MM DD DDD") from date_tbl
where id_col = 4;
---- RESULTS
'2017 017 17 7 11 28 332'
---- TYPES
STRING
====
---- QUERY
# Time tokens not allowed with date type.
select cast(date_col as string format "YYYY-MM-DD HH12") from date_tbl
where id_col = 4;
---- CATCH
PARSE ERROR: Time tokens provided with date type.
====
---- QUERY
# Boundary tests with FORMAT clause
select cast("0001-01-01" as date FORMAT "YYYY-MM-DD");
---- RESULTS
0001-01-01
====
---- QUERY
select cast("9999-12-31" as date FORMAT "YYYY-MM-DD");
---- RESULTS
9999-12-31
====
---- QUERY
# Cast NULL string to date
select cast(cast(NULL as string) as date format "YYYY-MM-DD");
---- RESULTS
NULL
---- TYPES
DATE
====
---- QUERY
# Cast NULL date to string
select cast(cast(NULL as date) as string format "YYYY-MM-DD");
---- RESULTS
'NULL'
---- TYPES
STRING
====