gpt4 book ai didi

sql - H2 TRUNC 功能缺陷

转载 作者:行者123 更新时间:2023-12-04 18:09:39 24 4
gpt4 key购买 nike

从 1.3.172 版本开始,有一个 TRUNC 函数,它模仿了 Oracle 的 TRUNC(TIMESTAMP)。实现过程中存在一个小问题。查询:

select TRUNC(TIMESTAMP '2000-02-04 11:13:14') from dual;

按预期返回“2000-02-04 00:00:00”,但是:

select TRUNC(TIMESTAMP '2000-02-04 15:13:14') from dual;

返回“2000-02-04 12:00:00”,这是错误的。

原因是实现不正确(从Function.java的1031行开始),我们看到:

case TRUNCATE: {
if (v0.getType() == Value.TIMESTAMP) {
java.sql.Timestamp d = v0.getTimestamp();
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);

c.set(Calendar.HOUR, 0) 应该替换为 c.set(Calendar.HOUR_OF_DAY, 0) --- 否则它会截断 12 -小时时钟(仅在中午之前模仿 oracle 版本)。

是否有希望在不久的将来包含此类修复程序?

我会自己进行修复,但“stackoverflow h2 标签”是我能找到的唯一“支持”链接,所以我就是从那里报告问题的。

与此同时(在我等待修复变得可访问时),是否可以替换(例如,通过删除现有别名并将其替换为不同的实现)?

最佳答案

H2 web site ,“支持”下有3个链接:StackOverflow , Google Group EnglishJapanese .对于错误报告,使用 Google Group 很有意义。

截断时间戳的功能相对较新。您发现的错误已被其他人发现并已修复在主干中。如果需要,您可以自己下载并构建 H2 来尝试一下。

关于sql - H2 TRUNC 功能缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322905/

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