のタイムスタンプする日付からタイプ強制、LHS(timestamp
)<=
RHS(date
)同じ値の'2013-09-30'
はとして等しいを治療されていません。一方、RHSにおけるCAST
のTIMESTAMP
は良好に機能する。ハイブ - 私はスパークSQLにハイブクエリを実行すると表現
> 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ソリューションの新しい回答(スパークが次のバージョンを解決する場合)/ハックはいつでも歓迎します。 – mrsrinivas