当我在 Spark SQL 中运行 Hive 查询时,相同值的LHS ( timestamp
) <=
RHS ( )不会被视为相等。而在RHS 中运行良好。date
'2013-09-30'
CAST
TIMESTAMP
> SELECT CASE
WHEN CAST(ADD_MONTHS(CAST('2013-09-30' AS DATE), +1) AS TIMESTAMP) <= ADD_MONTHS(CAST('2013-09-30' AS DATE), +1)
THEN 'less than or equal'
ELSE 'greater'
END AS TIMESTAMP_LTE_DATE
FROM
VALUES(1);
+---------------------+--+
| TIMESTAMP_LTE_DATE |
+---------------------+--+
| greater |
+---------------------+--+
我们有这么多的表达式DATE
和TIMESTAMP
组合,所有查询都将动态生成。因此,很难CAST
在所有地方找到列或值。
有没有办法自动将表达式中的 RHS/LHS 转换为Hive/SparkSQL 中的更高数据类型(类型强制)?
在 Oracle 11g 中也尝试过类似的查询,它运行良好,去equal
.
感谢你的帮助!!