gpt4 book ai didi

java - 在 Apache Phoenix 中显示正确的 HBase 日期类型时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:25 25 4
gpt4 key购买 nike

我在从 apache phoenix 读取通过 hbase api(使用“put”命令)创建的日期格式数据时遇到问题。

这是我期望的日期格式:日期 : 2018-12-17T21:21:45+07:00 进入'yyyy-MM-dd' => '2018-12-17'

该表是使用以下 DDL 从 phoenix 客户端创建的:

CREATE TABLE "TEST"
(
ID VARCHAR,
"col1".TRX_DATES UNSIGNED_DATE
CONSTRAINT PKD PRIMARY KEY (ID)
)

但是,当我尝试查询数据时,它显示的日期格式不正确:

292269006-11-18

我尝试了一些研究和实验,使用各种数据类型将日期插入到 hbase,包括使用日期的长值(毫秒)。但是,它仍然无法在 phoenix 中显示正确的日期值('yyyy-MM-dd')

对于这个案例有什么建议吗?

最佳答案

也许这应该是一条评论,因为我无法解释出现问题的所有细节,也无法解释如何修复它。但我可以看到你的问题来自于纪元以来毫秒符号位的反转。我试过这个:

    long milli = OffsetDateTime.parse("2018-12-17T21:21:45+07:00").toInstant().toEpochMilli();
milli += Long.MIN_VALUE; // Flip the sign bit
Date wrongDateAsOldfashiondDate = new Date(milli);
System.out.println(wrongDateAsOldfashiondDate);
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(wrongDateAsOldfashiondDate));

我的计算机上的输出(在欧洲/哥本哈根时区)是:

Fri Nov 18 08:08:49 CET 292269006
292269006-11-18

通常情况下,人们不应该使用旧的且设计不佳的 Date 类,但这是我可以获得与您完全相同的结果的方法。与现代日期和时间 API 的区别在于 Date 使用儒略历,因此显然软件也使用了它,给出了意想不到的结果(可能也涉及了 Date 类)。

关于java - 在 Apache Phoenix 中显示正确的 HBase 日期类型时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com