繁体   English   中英

SAP HANA - 处理日期数据类型的问题

[英]SAP HANA - problem with handling date-datatype

我正在使用 SAP HANA,我需要对日期做一些事情(主要是添加日期)。

我在一年中的某个特定日子(5 月的第二个星期六)工作时遇到问题。 我的猜测是这与夏令时有关。

我简化查询以显示问题。

DO
BEGIN
    DECLARE FECHA VARCHAR(20) = '2020-05-10';

    SELECT :FECHA AS D1
         , TO_DATE(:FECHA) AS D2
         , TO_VARCHAR(TO_DATE(:FECHA)) AS D3
      FROM DUMMY;
END;

我得到的结果是:

|------------|-------------|------------------------|------------|
|    D1      |      D2     |           D3           |     D4     |
|------------|-------------|------------------------|------------|
| 2020-05-10 | 09-may-2020 | 09-may-2020 23:00:00.0 | 2020-05-10 |
|------------|-------------|------------------------|------------|

添加天数时,这会导致各种问题,这就是我遇到的问题。 但仅仅这个简单的例子就足够了。

提前感谢您的建议。

Mikel Rychliski 的回答几乎是正确的。

正如我在博客文章中解释的时间问题? a few years ago, SAP HANA Studio is a JAVA application that uses java.sql.Date / java.sql.Timestamp objects to handle date/timestamp information. 要使用这些,必须配置Calendar

无需进一步配置(即提到的 JVM 参数-Duser.timezone ) JVM 使用其默认时区设置。

引用我的帖子:

If the JVM runs on Linux, that would be the value of TZ again, on MS Windows it would be the current timezone setting for the Windows user that runs the JVM.

如果您想说服自己 SAP HANA 中的数据是正确的,那么使用基于非 JDBC 的连接是一种简单的方法。

例如,只需通过hdbsql或 ODBC 客户端运行您的代码。

我认为问题出在 Hana Studio 上,因为在 DBeave 中它按预期工作:PI 将这个问题留在这里,以防其他人需要知道如何解决这个问题。

我会尝试在 Hana Studio 中找到一种方法来修复它并回发。

HANA Studio(和所有其他 JDBC 应用程序)假设DATE存储在数据库中是 UTC。 这些值在获取时会转换为客户端的本地时区。

在您自己的 JDBC 应用程序中,您可以在 getDate() 调用中传递日历 object 以指定您希望将服务器值转换为哪个时区。

HANA Studio 依赖于 JVM 时区设置,默认情况下从操作系统读取。 为避免在 HANA Studio 中出现此问题,您可以在 hdbstudio.ini 文件中添加 JVM 属性-Duser.timezone=UTC (或更改您机器上的时区)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM