Spanner 在 GoogleSQL 和 Cloud SQL for PostgreSQL 中提供日期和时间戳函数。某些函数(例如 TIMESTAMP)依赖于时区,接受可选的时区参数。如果函数中未提供时区参数,Spanner 数据库会默认使用 America/Los_Angeles 时区。
使用 Spanner 时,您可以更改数据库的默认时区以自定义此行为。
限制
- 您只能更改没有任何表的空数据库的时区。
- 在语句中提供时区参数会为该语句替换数据库的默认时区。
- REST 和 RPC API 中的所有时间戳都必须使用世界协调时间 (UTC),并以大写的
Z结尾。 - 查询结果中的时间戳始终以世界协调时间 (UTC) 显示,并附加
Z。不会执行显示时区转换。
所需的角色
如需获得设置数据库默认时区所需的权限,请让您的管理员为您授予数据库的 Cloud Spanner Database Admin (roles/spanner.databaseAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含设置数据库默认时区所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能设置数据库默认时区:
-
设置数据库默认时区:
spanner.databases.getDdl, spanner.databases.updateDdl
设置默认时区
如需更改数据库默认时区,请运行以下语句:
GoogleSQL
ALTER DATABASE DATABASE-NAME SET OPTIONS (default_time_zone = 'TIME-ZONE-NAME');
替换以下内容:
- DATABASE-NAME:数据库的名称。 例如
my-database。 - TIME-ZONE-NAME:要设置的数据库默认时区的名称。必须是 IANA 时区数据库中的有效条目。例如
Etc/UTC。
PostgreSQL
ALTER DATABASE DATABASE-NAME SET spanner.default_time_zone