Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 蜂巢中的日期和时区_Date_Hive_Timezone - Fatal编程技术网

Date 蜂巢中的日期和时区

Date 蜂巢中的日期和时区,date,hive,timezone,Date,Hive,Timezone,我很难理解Hive是如何处理日期和时区的: select item_id, cal_dt from ds where item_id = 7208582515 and cal_dt='2019-02-11'; 7208582515 2019-02-10 我知道这一定是个时区问题。现在是下午11点(我想和Hadoop集群时间一样),但是Hive(1.2)在没有任何时区(UTC)的节点上运行 之前,我遇到了一个更大的问题,其中一个查询具有以下条件: next_dt = date_add(

我很难理解Hive是如何处理日期和时区的:

select item_id, cal_dt from ds where item_id = 7208582515 and cal_dt='2019-02-11';
7208582515      2019-02-10
我知道这一定是个时区问题。现在是下午11点(我想和Hadoop集群时间一样),但是Hive(1.2)在没有任何时区(UTC)的节点上运行

之前,我遇到了一个更大的问题,其中一个查询具有以下条件:

next_dt = date_add(cal_dt,1)
它在时钟改变日期时不起作用。我想那是因为我的TZ设定在美国/洛杉矶,所以我取消了它


我不知道发生了什么事。我没想到日期会受到时区的影响。正确的做法是什么?

只要问问Hive内部使用的时区:
选择current_timestamp()作为DEF_FMT_IN_DEF_TZ,选择current_timestamp()作为DEF_FMT_IN_utc,选择date_格式(current_timestamp(),'XXX')作为DEF_TZ_ISO
Hive reference for date functions Java reference for SimpleDataformat建议阅读:“程序员相信时间的谬误”(这甚至不是一个完整的列表)底线:你可能必须从你的“用户”TZ获得+/-个小时数(如果你与印度交易,则为半个小时),以匹配“蜂巢”TZ。由于DST,这个数字可能一年改变两次。你可以在“临时宏”中编写规则“以便转换在查询中自动内联。享受接下来几天的开发和测试…节点上的配置单元安装一定有问题。现在已经是上午10点了,我的时间仍然是2019-02-10,所以不可能是时区。另外,spark sql返回正确的结果。将TZ设置为PDT似乎可以解决配置单元问题。很奇怪。也许Hive无法处理空时区