Datetime 为什么在hive中使用UTC时间戳返回错误的年份?
正在尝试在配置单元CLI中运行简单查询-Datetime 为什么在hive中使用UTC时间戳返回错误的年份?,datetime,hive,utc,Datetime,Hive,Utc,正在尝试在配置单元CLI中运行简单查询- select to_utc_timestamp(unix_timestamp("04/24/2017 01:59:01","MM/dd/YYYY HH:mm:ss"),'EST'); 结果: OK 1970-01-18 09:00:35.941 Time taken: 0.448 seconds, Fetched: 1 row(s) 输出不应该是日期加4小时吗?我们开始吧。您需要将您的unix\u时间戳包装在来自unixtime的中 select t
select to_utc_timestamp(unix_timestamp("04/24/2017 01:59:01","MM/dd/YYYY HH:mm:ss"),'EST');
结果:
OK
1970-01-18 09:00:35.941
Time taken: 0.448 seconds, Fetched: 1 row(s)
输出不应该是日期加4小时吗?我们开始吧。您需要将您的
unix\u时间戳
包装在来自unixtime的中
select to_utc_timestamp(from_unixtime(unix_timestamp('04/24/2017 01:59:01','MM/dd/yyyy hh:mm:ss'),'yyyy-MM-dd hh:mm:ss'),"EST");
yyyy
(而不是yyy
)
unix\u timestamp
返回bigint,并将整数值视为毫秒
to_utc_timestamp
需要一个实际的时间戳作为输入,这不是从unix_timestamp
获得的<代码>到utc时间戳(“2017-04-24 01:59:01”,“EST”)
工作正常,但事实并非如此。它也接受UNIX时间戳,即bigint。它在hive文档{any primitive type}*=中表示,包括timestamp/date、tinyint/smallint/int/bigint、float/double、decimal。例如,to_utc_timestamp(0.123,'PST')返回1970-01-01 08:00:00.123
最初文档仅引用时间戳参数。你所引用的是我最近添加到文档中的内容。然而,事情似乎要复杂一点。我刚刚更新了文档P.s.-很好,谢谢:-)谢谢你更新描述!我不知道用这种方法做这件事比用另一种方法做这件事有什么好处?hive中的时间戳,呃……只是为了calirfy,您需要使用小写字母yyyy
的原因是java将大写字母Y
视为一周一年@DanielDubovski,看看这个糟糕的java文档
select to_utc_timestamp(1000*unix_timestamp("04/24/2017 01:59:01","MM/dd/yyyy HH:mm:ss"),'EST');