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 + 将前一天日期传递给喜欢子句的主要内容,如果未能解决你的问题,请参考以下文章