我需要解决当 Firebird 服务器日期与运行应用程序的本地 Windows 桌面的日期/时间设置不同时发生的问题。
在我的开发机器上,Firebird 2.5 作为 Windows 服务运行。有什么方法可以将Firebird日期设置为与系统日期不同吗?
预期结果将是
SELECT CURRENT_DATE from rdb$database
,指示与 Windows 系统托盘中可见的日期不同的日期。
不,这在 Firebird 2.5 中是不可能的。 Firebird 始终使用系统时间,并且在 Firebird 3.0 及更早版本中,将始终使用系统时区中的时间。
在 Firebird 4.0 及更高版本中,您可以使用 firebird.conf 中的设置
DefaultTimeZone
配置服务器附件的默认会话时区。客户端可以在他们正在使用的 fbclient 的 firebird.conf 中的 DefaultTimeZone
中指定会话时区,或者使用 isc_dp_session_time_zone
连接属性为每个连接配置它,或者使用 SET TIME ZONE
来更改某个连接的时区。即时连接。
在 Firebird 4.0 中,
CURRENT_DATE
值将报告会话时区中的日期(不一定与服务器的时区匹配),并且 CURRENT_TIMESTAMP
现在是 TIMESTAMP WITH TIME ZONE
,报告时间和日期, timezone 为会话时区。无时区的替代方案称为 LOCALTIMESTAMP
,它还将报告会话时区中的时间和日期(但不报告时区)。
也就是说,即使在 Firebird 4.0 及更高版本中,时间和日期仍将与服务器时间绑定,仅可能在不同时区(例如客户端使用的时区)获得相同的时刻。