Когда я бегу Hive запросов в Спарк SQL, LHS (timestamp
) <=
RHS (date
) для такого же значения '2013-09-30'
не лечится, как равный. В то время как CAST
от TIMESTAMP
в RHS работает хорошо.Hive/SparkSQL - Тип Принуждение с даты, временной метки в выражении
> 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
.
Цените свою помощь!
Новые ответы с решениями diff (если искра разрешает следующую версию)/hack всегда приветствуется. – mrsrinivas