DBVisualizer 在持有 '0001-01-01' 的日期字段上显示空值



我在DbVis:中发布了一条SQL语句

select vestdate, name from person where vestdate is not null

并得到了许多结果,其中DbVisualizer显示vestdate为(null)

经过调查,我发现vestdate是'0001-01-01',所以查询正确地返回了这些记录,但DbVisualizer将它们显示为(null)

我刚刚从windows 8切换到windows 10。
它适用于windows 8(显示"0001-01-01"(,但不适用于windows 10(显示null(:

Product: DbVisualizer Pro 11.0.4 [Build #3103]
OS: Windows 8.1
OS Version: 6.3
OS Arch: amd64
Java Version: 1.8.0_252
Java VM: OpenJDK 64-Bit Server VM
Java Vendor: AdoptOpenJDK
Java Home: c:program filesdbvisualizerjre
DbVis Home: C:Program FilesDbVisualizer
User Home: -------
PrefsDir: -------
SessionId: 55
BindDir: -------
Product: DbVisualizer Pro 11.0.5 [Build #3113]
OS: Windows 10
OS Version: 10.0
OS Arch: amd64
Java Version: 1.8.0_252
Java VM: OpenJDK 64-Bit Server VM
Java Vendor: AdoptOpenJDK
Java Home: c:program filesdbvisualizerjre
DbVis Home: C:Program FilesDbVisualizer
User Home: -------
PrefsDir: -------
SessionId: 968
BindDir: -------

有什么想法可以让程序向我显示真正的值,而不是null的解释值吗?

IBM支持文档中解释了该问题:

问题

尝试在1940年之前或2039年之后的日期列中插入日期值将在相应的数据库表中将日期表示为NULL。

原因

这是由IBMi数据库工具箱JDBC驱动程序的限制引起的,如相关链接中所述

Toolbox JDBC驱动程序如何处理1940年之前(或2039年之后(的日期?IBMi数据库支持多种日期格式。Toolbox JDBC驱动程序使用在IBMi系统上设置为默认的日期格式。该默认值通常设置为"0";mdy";其仅支持1940年至2039年之间的日期。您可以通过指定";日期格式";属性。最好的选择是";iso";,其支持完整的四位数日期。做到这一点最简单的方法是添加";;日期格式=iso";连接到数据库时使用的URL的末尾。

解决问题

附加";;日期格式=iso";到适用数据库的主机连接属性通过首选项->EGL->SQL数据库连接将正确显示各自的日期,例如:

1939-01-01.

可以通过执行以下操作在DBVisualizer中修复该问题:

  1. 数据库->编辑数据库连接
  2. 选择"属性"选项卡
  3. 选择驱动程序属性
  4. 将参数date formattime format编辑为iso
  5. 应用更改
  6. 断开连接并重新连接

最新更新