Phoenix 时区问题
最近在测试flink从trino查询数据插入到phoenix5的功能,发现一个时间的问题:

明明插入的时间是 '1940-06-01',查询出来的时间会少一天,同样的 Timestamp 也会自动少掉 8个小时,详细原因参考 Phoenix关于时区的处理方式说明。但是文章中阿里的已经处理,但是社区版的仍然有问题,好在社区版本的也有了对应的升级包PHOENIX-6623 ,把phoenix 5.14的版本编译好后,升级上去,打开 phoenix.query.applyTimeZoneDisplacement=true,但是经过测试大部分时间已经能够正常的显示,仍然有一些时间存在问题,

其中的原因是因为 phoenix 采用的 org.joda.time 工具包,存的时间是按照GMT时区存的数据,对于夏令时的处理存在问题,详细可以参照 消失了的那些天——Joda中的夏令时。对于特殊的几个时间 1940-06-01、1941-03-16、1986-05-04、1987-04-12、1988-04-10、1989-04-16、1990-04-15、1991-04-14 的时间夏令时的偏移量是按照9小时来处理的,正常的时间按照8个小时来做处理,通过时区的转换 ,这种正好是夏令时多1个小时的就会显示少1一天。目前社区应该没有解决特殊的夏令时的显示。
目前的解决方案:升级到phoenix 5.14版本,打开phoenix.query.applyTimeZoneDisplacement=true,Timestamp格式是可以正常显示,date 类型数据仍然存在一点问题,查询的客户端使用 sqlline-thin 客户端以及QueryServer JDBC,sqlline 的客户端to_char显示的是GMT时区的时间,sqlline-thin to_char显示的是 GMT+8 的时间,date 类型的数据通过 SUBSTR(to_char(date),1,10) 来解决显示问题,如果不存在这几个夏令时时间,就可以直接查询原表
sqlline:

sqlline-thin:

另外:
5.14版本缺少 QueryServer的可以参考 关于Phoenix5.X 安装包不包含QueryServer服务问题_phoenix-hbase5.x(适配phoenix-queryserver)_Jason_yan0527的博客-CSDN博客,需要自行编译
Phoenix 时区问题的更多相关文章
- BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...
- Python时区转换
最近工作中遇到了一个问题:我的server和client不是在一个时区,server时区是EDT,即美国东部时区,client,就是我自己的电脑,时区是中国标准时区,东八区.处于测试需要,我需要向se ...
- Android时区及语言代码
1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist ...
- Android中的常见时区
方法: private void printTimeZone(){ String[] ids= TimeZone.getAvailableIDs(); for (int i = 0; i < i ...
- 我的Android进阶之旅------>Android 设置默认语言、默认时区
1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist.sys.timez ...
- GMT与Etc/GMT地区信息的时区转换
GMT 地区信息的时区 在将来的版本中可能不再支持以下左面一列中的地区信息的时区.可能从 /usr/share/lib/zoneinfo 删除这些文件.左列中的地区信息的时区用右列中对等的时区来替换. ...
- 解决 .NET Core 在 Linux 下的时区问题
环境 # dotnet --info .NET Core SDK (reflecting any global.json): Version: Commit: 8a7ff6789d Runtime E ...
- Java8获取当前时间、新的时间日期类如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类
下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java ...
- python 通过pytz模块进行时区的转换,获取指定时区的时间
import pytz import time import datetime print(pytz.country_timezones('cn')) # 查询中国所拥有的时区 print(pytz. ...
- PHP 5 时区
PHP 5 时区 PHP 支持的时区 下面是 PHP 支持的时区的完整列表,这些对一些 PHP 日期函数很有用. 非洲 美洲 南极洲 北冰洋 亚洲 大西洋 大洋洲 欧洲 印度洋 太平洋 非洲 Afri ...
随机推荐
- Sealos 是企业节省成本的终极武器
本文通过多维度,多场景对比来阐述 Sealos 为企业节省大量成本,结合一些现有客户具体的实际情况全面分析成本模型,企业可以根据自己的实际情况来对号入座,看是否适合使用 Sealos. 云操作系统节省 ...
- 3 - 任务调度算法 & 同步与互斥 &队列
之前的都是按照优先级不同允许抢占(不讲道理),不管你在做什么,轮到优先级最高的任务,直接抢占执行 怎样才能讲道理呢?稍微等等嘛,等我做完活你再做 1 支持抢占,0不支持抢占 同优先级任务是否交替 ...
- ARM的无线ble IP Cordio-B50 stack and profiles简析
一 简介 人家英文写的很清楚,我就不蹩脚额翻译了. Cordio-B50 stack is designed specifically for Bluetooth low energy single- ...
- 超低功耗mcu芯片AMA3B 开发备忘之初串口打印
一 前言 对于软件工程师来说,没什么比看到一个hello world的打印更让人感觉兴奋了.调试芯片,很多人都知道,hello world这个打印意味着什么. 二 软硬件准备 1 一个AM ...
- 关于Java执行Cmd命令出现的死锁问题解决
原文:关于Java执行Cmd命令出现的死锁问题解决 - Stars-One的杂货小窝 问题 之前研究了Java通过执行cmd命令从而触发Android打包的思路,但是发现Android打包成功之后,后 ...
- Ubuntu(Linux) PyQt5 QtUIFile 转换为 PythonModule (pyuic.py/pyuic脚本)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 无力吐槽,uniapp项目外包接单碰上了这样的开发人员
随着疫情期形式的不断变化,线上线下各个行业都受到冲击.2020年我在家歇息了近4个月:跟很多人一样这一年我失业了,那段时间真的很迷茫,年龄也已过30,加上网上各种"开发人员35岁" ...
- 工作记录:TypeScript从入门到项目实战(基础篇)
前言 TypeScript是什么? 引用官方原话 TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript.TypeScript可以在任何浏览器.任何计算机和任何操作系 ...
- 记录--三分钟打造自己专属的uni-app工具箱
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 可曾想过我们每次创建新项目,或者换地方写程序,都要把之前写过的工具类找出来又要复制粘贴一遍有些麻烦,尤其是写uni-app自定义模板 ...
- abp9 .net8 升级错误记录
错误一. Cannot find compilation library location for package 'System.Security.Cryptography.Pkcs' 修复方法: ...