2016-12-22 3 views
1

タイムスタンプとしてキャスト:、なぜ私はこのような2行を持つハイブテーブル持っている二つの異なる結果を与える

select cast(1 as timestamp) from t2; 

それはunconsistent結果を与える:

0: jdbc:hive2://localhost:10000/default> select * from t2; 
+-----+--------+ 
| id | value | 
+-----+--------+ 
| 10 | 100 | 
| 11 | 101 | 
+-----+--------+ 
2 rows selected (1.116 seconds) 

をしかし、私は、クエリを発行すると誰でも私に理由を教えてもらえますか?

0: jdbc:hive2://localhost:10000/default> select cast(1 as timestamp) from t2; 
+--------------------------+ 
|   _c0   | 
+--------------------------+ 
| 1970-01-01 07:00:00.001 | 
| 1970-01-01 07:00:00.001 | 
+--------------------------+ 
2 rows selected (0.913 seconds) 
0: jdbc:hive2://localhost:10000/default> select cast(1 as timestamp) from t2; 
+--------------------------+ 
|   _c0   | 
+--------------------------+ 
| 1970-01-01 08:00:00.001 | 
| 1970-01-01 07:00:00.001 | 
+--------------------------+ 
2 rows selected (1.637 seconds) 
+0

'case'または' cast'? – shmosel

+0

それはキャストされ、タイムスタンプにintを変換する –

+2

ところで、なぜ最初にそれをやっていますか? –

答えて

1

あなたの問題を再現できません。ハイブバージョンは使用していますか? Hiveはタイムスタンプとbigintのバグを持っていましたが(https://issues.apache.org/jira/browse/HIVE-3454参照)、問題は説明していません。たとえば、Hive 0.14は、異なる結果を返します。

SELECT (cast 1 as timestamp), cast(cast(1 as double) as timestamp) from my_table limit 5; 
関連する問題