MySQL 到 HiveQL 转换中的错误,包括 DATE_SUB 和 INTERVAL
Posted
技术标签:
【中文标题】MySQL 到 HiveQL 转换中的错误,包括 DATE_SUB 和 INTERVAL【英文标题】:Error in MySQL to HiveQL Conversion including DATE_SUB and INTERVAL 【发布时间】:2020-08-13 12:07:11 【问题描述】:我正在尝试将用 mysql 编写的查询转换为 HiveQL 查询给我错误的部分是:
WHERE 1 = 1
AND table1.incoming_date >= DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) - 1 DAY),INTERVAL 3 MONTH)
很可能是因为在 Hive 中使用 DATE_SUB() 不支持 INTERVAL。 那么,谁能帮我转换一下这部分。
错误:
ParseException:
extraneous input 'DAY' expecting ')', ','(line 179, pos 60)
【问题讨论】:
请始终向我们展示错误 包含错误 蜂巢版本好吗? 它是 PySpark 3.0.0 在 spark.sql 中使用它 【参考方案1】:也许您可以使用 Hive date functions date_sub
和 add_months
的组合来做到这一点。
beeline> select current_date today, add_months(date_sub(current_date,1),-3) past_date;
INFO : OK
+------------+-----------+
| today | past_date |
+------------+-----------|
| 2020-08-13 | 2020-5-12 |
+------------+-----------|
1 row selected (0.101 seconds)
【讨论】:
好一个@mazaneicha,+1以上是关于MySQL 到 HiveQL 转换中的错误,包括 DATE_SUB 和 INTERVAL的主要内容,如果未能解决你的问题,请参考以下文章
将一年中的数字星期转换为 hiveql 中的日期 (yyyy-mm-dd)
HiveQL 相当于 MySQL 的 TRUNCATE()?