Sybase如何处理时区?

时间:2014-07-03 13:08:19

标签: jdbc timezone sybase sybase-ase

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

  • SELECT \ READ:返回主机时区的转换日期(以微秒为单位存储)。
  • INSERT \ WRITE:根据主机时区的时区插入微秒值。

如果移动数据库并更改主机时区,则返回给应用程序的日期将更改(至少是),至少是日期的字符串表示形式。

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