如何更改 DBeaver 时区/如何阻止 DBeaver 转换日期和时间

How to change DBeaver timezone / How to stop DBeaver from converting date and time

当我将 DBeaver 与 Cassandra 一起使用时,即使数据以没有任何时区的日期或时间格式存储,它也会显示 +01:00 的偏移量。这会导致一些像这样的奇怪查询:

SELECT "Time"
FROM keyspace."Table"
ORDER BY "Time" DESC;

Time
00:00:00
23:00:00
22:00:00
...
01:00:00

那么,如何删除转换或将时区设置为 UTC?

DBeaver 使用安装的计算机中的时间,因此更改时钟并重新启动 DBeaver 会起作用。但是有一种方法可以只对 DBeaver 执行此操作。

  • 关闭 DBeaver。
  • 转到 DBeaver 快捷方式。大概就在这里:

    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\DBeaver

  • 右键单击它,选择属性,然后在 目标 框中将 -vmargs -Duser.timezone=UTC 添加到末尾,结果如下所示:

    "C:\Program Files\DBeaver\dbeaver.exe" -vmargs -Duser.timezone=UTC

  • 启动 DBeaver,时间现在以 UTC 显示。

我找到了另一个解决方案:

Setting dbeaver.ini file in DBeaver root directory.

打开文件:

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834
-showsplash
# START: change jre version, not using the one in %JAVA_HOME%
-vm 
D:\ArPortable\Java\jdk1.8.0_171\jre\bin\server\jvm.dll
# END
# JVM settings
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Xms64m
-Xmx1024m
# time zone
-Duser.timezone=UTC
# language
-Duser.language=en

更新 2021-04-05:根据最近的评论,我需要明确该解决方案仅适用于 Clickhouse DB。此外,这是一个非常古老的答案,请记住,它目前是 99% 过时的解决方案。

我认为它在以前的某个版本中已修复。

只需转到设置 -> 编辑器 -> 数据格式和 select 'Use native date/time format' 复选框。

如果这是关于时区的 JDBC 驱动程序问题:
右键单击连接以打开连接设置

更改时区

或者您也可以更改服务器时区驱动程序 属性

如果您想查看 Selects 的时区,可以转到 DBeaver 首选项:

首选项

  1. 单击 Type,并将其更改为 Timestamp
  2. Pattern Value 中添加终止符“Z z”并查看 Sample 结果如下:2019-11-06 07:38:54 -0300 BRT
  3. 点击应用,然后应用并关闭
  4. 完成:)

在Mac

  1. 转到 Finder > 应用程序
  2. 右键单击 DBeaver 并select显示包内容
  3. 打开Contents\Eclipse\dbeaver.ini
  4. 在 -vmargs 行之后,添加:-Duser.timezone=UTC
  5. 保存文件并重启 DBeaver

限制:每次版本升级都必须重做。

Windows

  1. 进入DBeaver安装目录C:\Program Files\DBeaver
  2. 打开dbeaver.ini
  3. 在 -vmargs 行之后,添加:-Duser.timezone=UTC
  4. 保存文件并重启 DBeaver

来源:This blog

对于 Linux

中的 DBeaver
  1. 如果是 运行,请退出 DBeaver。

  2. 编辑 /usr/share/dbeaver/dbeaver.ini,将 -Duser.timezone=UTC 添加到 -vmargs 部分。例如:

     -vmargs
     -XX:+IgnoreUnrecognizedVMOptions
     --add-modules=ALL-SYSTEM
     -Dosgi.requiredJavaVersion=11
     -Xms64m
     -Xmx1024m
     -Duser.timezone=UTC
    
  3. 打开 DBeaver 并查看 UTC 时间戳。

查看完整时间戳值

  1. Window > 首选项
  2. 编辑器 > 数据编辑器 > 数据格式
  3. 勾选'Disable date/time formatting'

之前:2021-04-19 16:14:23

之后:2021-04-19 16:14:23.056178+00

使用 PostgreSQL 测试。

从今天开始 (DBeaver 21.3.2 CE),您需要转到 Window > 首选项。 在对话框 pop-up window 中选择:编辑器 > 数据编辑器 > 格式,然后在格式框的下拉列表中选择时间戳并单击时间轴行。

Right-click 并打印 UTC

单击右下角的“应用并关闭”按钮。 完成!