sql - 为什么转换为时间戳会给出两个不同的结果

标签 sql hadoop apache-spark hive

我有一个包含两行的配置单元表:

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

但是当我发出查询时:

select cast(1 as timestamp) from t2;

它给出了不一致的结果,谁能告诉我原因?

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)

最佳答案

我无法重现您的问题,您使用的是哪个 Hive 版本? 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;

关于sql - 为什么转换为时间戳会给出两个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41276440/

相关文章:

scala - Bluemix Apache Spark 服务 - Scala - 读取文件

sql - 在自定义 SSIS 任务中执行 SQL 的首选方式是什么?

sql - postgresql 从选择中插入

hadoop - YARN的DRF解释

python - 将pyspark数据帧转换为python字典列表

java - 替代已弃用的方法sparksession.read.json(JavaRDD)

sql - 在 CASE 表达式中将 DateTime 变量设置为 NULL

sql - 撤销 Oracle 中表的权限

hadoop - hadoop 中的 RESTFUL API

hadoop - 如何选择${mapred.local.dir}?