【问题标题】:calculate days difference between two days in hive计算蜂巢中两天之间的天数差异
【发布时间】:2020-08-16 16:00:39
【问题描述】:

我正在尝试显示“empdate”列与当前日期之间的天数差异小于等于 365 的记录。

列 empdate 是 varchar 数据类型。我已经编写了以下查询,但无法获得结果。我在哪里获取当前日期和 empdate 之间大于 365 的所有记录。 谁能帮我解决这个问题。

select * from table where 
cast(datediff(from_unixtime(unix_timestamp(current_date 'yyyy-MM-dd'),'yy-MM-dd'),
from_unixtime(unix_timestamp(cast(empdate as string)'yyMMdd'),'yy-MM-dd') as int)<=365;

【问题讨论】:

  • 请更新第一段文字,因为我不知道你在描述什么。您好像漏掉了一个(或多个)单词。
  • @Mike Pomax' Kamermans 我在第一段中更新了上下文。如果您需要更多输入,请告诉我
  • @AnushaRadhakrishnan,添加了答案请检查!

标签: hive


【解决方案1】:

以下查询可能对您有所帮助,

select datediff(to_date(from_unixtime(unix_timestamp(current_date),'yyyy-MM-dd')),
to_date(from_unixtime(unix_timestamp(empdate, 'yyMMdd')))) <=365 as daydiff 
from time_table;

测试来自 hive 的查询:

create table if not exists time_table(empdate string, empvalue string) row format
 delimited fields terminated by ',' stored as textfile;

insert into table time_table values ('101001','A'),('200101','B'),
('100619','C'),('110707','D');

hive> select *, datediff(to_date(from_unixtime(unix_timestamp(current_date),'yyyy-MM-dd')),
to_date(from_unixtime(unix_timestamp(empdate, 'yyMMdd')))) <=365 as daydiff 
from time_table;

OK
101001  A       false
200101  B       true
100619  C       false
110707  D       false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-09
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多