Datetime 为什么在hive中使用UTC时间戳返回错误的年份?

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

正在尝试在配置单元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 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');