Sybase如何处理时区



我需要了解Sybase如何处理和存储时区:

例如,如果JDBC客户端位于时区+1:00,而Sybase DB位于时区+2:00:

  1. 当JDBC客户端应用程序写入数据库(例如INSERT/UPDATE)时,Sybase将从客户端应用程序接收到的日期时间转换为其本地时区,并将其存储在db表中吗?
  2. 当JDBC客户端应用程序从数据库读取数据时,Sybase结果集是否包含客户端或服务器的SELECT查询时区?
  3. 如果DB服务器框后来移动到另一个国家,例如在时区+3:00,Sybase数据库中存储的日期时间值是否与移动后插入的日期时间不一致?
因此,考虑到上面的内容,我什么时候需要转换日期/时间,我应该将其转换为服务器或客户端的时区?

Sybase ASE将存储客户端应用程序传递给它的任何时间戳。它假设应用程序知道它在做什么,并且不会做任何转换。

这意味着写入和读取的数据将基于客户端应用程序的时区,而不是数据库服务器的时区。

这也意味着您可以随意移动数据库服务器,而不会导致数据不一致,因为您使用的是应用程序设置的时间。

我的理解是Sysbase存储从1970年1月1日00:00开始的微秒数。

  • SELECTREAD:返回主机时区的转换日期(以微秒为单位存储)。
  • INSERTWRITE:插入基于主机时区的微秒值。

如果移动数据库并更改主机时区,返回到应用程序的日期将发生变化(这很糟糕),至少日期的字符串表示形式会发生变化。

我的建议,让DB和Application始终在UTC处理,在表示层进行转换。

相关内容

  • 没有找到相关文章