Hive + 将前一天日期传递给喜欢子句

Posted

技术标签:

【中文标题】Hive + 将前一天日期传递给喜欢子句【英文标题】:Hive + Pass previous day date to like clause 【发布时间】:2018-03-05 08:49:56 【问题描述】:

我正在尝试根据前一个日期从配置单元表中获取记录。 示例:如果表如下

CustomerVisit

ID NAME VISIT_DATE
------------------

01 Harish 2018-02-31

03 Satish 2017-02-13

04 Shiva  2018-03-04

现在我需要获取所有具有visit_date = 2018-03-04 的记录(即今天的日期-1)。

预期的查询类似于:

select ID, Name from CustomerVisit where 
visit_date like concat((select date_sub(current_date, 1)),'%')

我试过了

select current_date; - Gives current date

select date_sub(current_date, 1) - Gives previous date

select concat(tab1.date1,'%') from 
(select date_sub(current_date, 1) as date1) as tab1; -- Gives the previous date appended with % which i need to use in like

但是当我使用上面的作为子查询时,它会失败并显示

select tab2.id, (select concat(tab1.date1,'%') as pattern from 
(select date_sub(current_date, 1) as date1) as tab1) from CustomerVisit as tab2 limit 1;

FAILED: ParseException line 1:0 无法识别 'seelct' 'current_date' '' 附近的输入

如何编写查询以获取上一个日期的结果?

【问题讨论】:

visit_date 的数据类型是什么?对于日期数据类型,您不需要使用 LIKE。只需使用where VISIT_DATE = yesterdays_date 【参考方案1】:

您不需要LIKE 子句。只需选择使用等于 (=)

select ID, Name from CustomerVisit where 
visit_date = date_sub(current_date, 1);

【讨论】:

以上是关于Hive + 将前一天日期传递给喜欢子句的主要内容,如果未能解决你的问题,请参考以下文章

Hive - 如何在 Hive 中跟踪和更新增量表的上次修改日期?

Impala - 在多个日期上运行相同的查询

如何从当前日期中减去一天然后在 Hive 中转换为字符串

hive的高阶函数

传递给子组件时道具未定义(反应钩子)

hive实现用户连续登陆的最大天数