簡體   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