首页 > 解决方案 > Presto 默认日期显示不正确

问题描述

presto> 选择日期'0001-01-01';

预期结果:'0001-01-01'

实际结果:'0001-01-02'

天增加了一个不知道为什么。

谁能帮我解决这个问题?

如果我在 presto-cli 上运行上述查询,则结果为“0001-01-01”,这是预期的,但是当我通过 SQL 工作台运行相同的查询时,结果为“0001-01-02”,这是实际结果。

标签: sqlpresto

解决方案


这是因为 Presto 在内部将 Joda Time 和 Java Time 用于服务器 API 和 JDBC 使用(根据 JDBC 标准)java.sql.Date和相关类。

Joda Time 和 Java Time 都使用预测的公历。这意味着他们计算天数就好像公历从那时起就存在一样。

java.sql.Datejava.util.Calendar就此而言)使用儒略历,这似乎更准确。它解释了一个事实,即儒略历一直使用到某一天,然后公历过去和现在仍在使用。(当然,它不准确也不可能准确,因为截止日期因国家而异,跨越几个世纪)。

我的建议是:varchar用于表示历史日期和日期时间。


推荐阅读