mysql - MySQL 到 HiveQL 转换时出现错误,包括 DATE_SUB 和 INTERVAL

标签 mysql hive hiveql

我正在尝试将用 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)

最佳答案

也许您可以使用Hive date functions的组合来做到这一点date_subadd_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)

关于mysql - MySQL 到 HiveQL 转换时出现错误,包括 DATE_SUB 和 INTERVAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63394826/

相关文章:

mysql - OctoberCMS:如何保持双向友好关系?

mysql - 如何获取最后一个 select 语句的结果集?

hadoop - 在 hive 中打印空值,同时将列声明为十进制

hive - 我们可以在 hive 最新版本中执行 "DELETE database name. table name"吗?

sql - 使用 HiveQL 正则表达式提取句点之前的所有字符?

php - 整数溢出接下来会发生什么

mysql - MyBatis批量更新异常:Column cannot be null

hadoop - 无法确定 Hadoop 版本信息

java - org.apache.thrift.TApplicationException:必填字段 'client_protocol'未设置

hive - Hive 查询结果中的 NULL 列名称