oracle,从表或数据库架构级别设置时区

时间:2019-11-19 12:20:54

标签: sql database oracle plsql timestamp

我们当前正在将数据库从Sybase迁移到Oracle cloud v12。在旧服务器中,该服务器完全归我们所有,因此我们可以将服务器时区更改为英国时间,同时反映夏时制。我们正在尝试在Oracle数据库中实施相同的更改,但是我们无法进行相同的修复,因为服务器将与另一个团队共享。有人知道改变systimestamp或to_timestamp_tz()使用的默认时区的方法吗?

这样做的目的是因为我们有世界各地的团队成员连接到该数据库,因此我们需要一个中央默认时区。

我们考虑过更改默认的SESSION参数,但这仅适用于个人的本地计算机,不适用于运行这些脚本/查询的正常用户或服务器。

我试图寻找合适的NLS参数,但找不到任何可以做到这一点的东西。

从查看V $ TIMEZONE_NAMES来看,我们似乎希望将其设置为“欧洲/伦敦”,因为Oracle可以使用它来确定是否以及需要为夏时制自动进行更改。

先谢谢您了:)

1 个答案:

答案 0 :(得分:0)

  • SYSTIMESTAMP在数据库服务器操作系统的时区中返回。
  • 通常,您应该在TO_TIMESTAMP_TZ()中提供时区,但是,如果未指定,则Oracle使用SESSIONTIMEZONE。您可以使用以下命令设置会话时区:

    ALTER SESSION SET TIME_ZONE= ...;

  • SQL会话的默认时区可以由环境变量ORA_SDTZ设置。在Windows中,您还可以设置注册表项HKLM\SOFTWARE\Oracle\KEY_{Oracle Home Name}\ORA_SDTZ

实际上,您无法从服务器端控制会话时区。服务器可以提供默认时区,但是只有在客户端中未设置值时,该默认值才适用。

相关问题