--! qt:dataset:src
set hive.fetch.task.conversion=more;

drop table date_1;

create table date_1 (d date);

insert overwrite table date_1 
  select cast('2011-01-01' as date) from src tablesample (1 rows);

select * from date_1 limit 1;
select d, count(d) from date_1 group by d;

insert overwrite table date_1 
  select date '2011-01-01' from src tablesample (1 rows);

select * from date_1 limit 1;
select d, count(d) from date_1 group by d;

insert overwrite table date_1 
  select cast(cast('2011-01-01 00:00:00' as timestamp) as date) from src tablesample (1 rows);

select * from date_1 limit 1;
select d, count(d) from date_1 group by d;

-- Valid casts
select 
  cast('2012-01-01' as string), 
  cast(d as string), 
  cast(d as timestamp), 
  cast(cast(d as timestamp) as date), 
  cast(d as date)
from date_1 limit 1;

-- Invalid casts. 
select 
  cast(d as boolean), 
  cast(d as tinyint),
  cast(d as smallint),
  cast(d as int),
  cast(d as bigint),
  cast(d as float),
  cast(d as double)
from date_1 limit 1;

-- These comparisons should all be true
select 
  date '2011-01-01' = date '2011-01-01',
  unix_timestamp(date '2011-01-01') = unix_timestamp(date '2011-01-01'),
  unix_timestamp(date '2011-01-01') = unix_timestamp(cast(date '2011-01-01' as timestamp)),
  unix_timestamp(date '2011-01-01') = unix_timestamp(cast(cast('2011-01-01 12:13:14' as timestamp) as date)),
  unix_timestamp(date '2011-01-01') < unix_timestamp(cast('2011-01-01 00:00:01' as timestamp)),
  unix_timestamp(date '2011-01-01') = unix_timestamp(cast('2011-01-01 00:00:00' as timestamp)),
  unix_timestamp(date '2011-01-01') > unix_timestamp(cast('2010-12-31 23:59:59' as timestamp)),
  date '2011-01-01' = cast(timestamp('2011-01-01 23:24:25') as date),
  '2011-01-01' = cast(d as string),
  '2011-01-01' = cast(date '2011-01-01' as string)
from date_1 limit 1;

select 
  date('2001-01-28'),
  date('2001-02-28'),
  date('2001-03-28'),
  date('2001-04-28'),
  date('2001-05-28'),
  date('2001-06-28'),
  date('2001-07-28'),
  date('2001-08-28'),
  date('2001-09-28'),
  date('2001-10-28'),
  date('2001-11-28'),
  date('2001-12-28')
from date_1 limit 1;

select 
  unix_timestamp(date('2001-01-28')) = unix_timestamp(cast('2001-01-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-02-28')) = unix_timestamp(cast('2001-02-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-03-28')) = unix_timestamp(cast('2001-03-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-04-28')) = unix_timestamp(cast('2001-04-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-05-28')) = unix_timestamp(cast('2001-05-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-06-28')) = unix_timestamp(cast('2001-06-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-07-28')) = unix_timestamp(cast('2001-07-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-08-28')) = unix_timestamp(cast('2001-08-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-09-28')) = unix_timestamp(cast('2001-09-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-10-28')) = unix_timestamp(cast('2001-10-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-11-28')) = unix_timestamp(cast('2001-11-28 0:0:0' as timestamp)),
  unix_timestamp(date('2001-12-28')) = unix_timestamp(cast('2001-12-28 0:0:0' as timestamp))
from date_1 limit 1;

drop table date_1;
