PG SQL 10将默认时区设置为UTC

时间:2019-02-10 12:37:13

标签: postgresql timezone postgresql-10

我需要更改数据库配置,以将UTC用作AWS RDS上托管的PostgreSQL10实例的默认设置。我希望它在数据库级别上永久更改,并且无论如何都不要恢复到任何其他时区。

我尝试运行此命令,但显示0条更新的行:

ALTER DATABASE <my-db> SET timezone='UTC'; 

我尝试将自定义参数组附加到RDS中的数据库并像这样修改条目(也可以在之后重新启动):

enter image description here

无论我做什么,当我运行select * from pg_settings where name = 'TimeZone';SHOW timezone时,它都会显示“美国/芝加哥”。

这似乎应该很容易做到,但是事实证明这是一个挑战。

2 个答案:

答案 0 :(得分:2)

如果要在UTC中存储时间戳,并且始终希望数据库也以UTC将数据发送到客户端,则应使用数据类型cmake_minimum_required(VERSION 3.0) project(FirstOpenGL) set(SOURCE main.cpp) add_executable(myapp ${SOURCE}) #Below Im trying to link ALL of the libs under the "project's local path" include_directories(${CMAKE_SOURCE_DIR}/Includes) link_directories(LinkPathSo ${CMAKE_SOURCE_DIR}/Lib_so) link_directories(LinkPathA ${CMAKE_SOURCE_DIR}/Lib_a) link_directories(LinkPathDll ${CMAKE_SOURCE_DIR}/Lib_dll) target_link_libraries(myapp LinkPathSo) target_link_libraries(myapp LinkPathA) target_link_libraries(myapp LinkPathDll) # Below: Im trying to link the installed binaries on mac find_package(glfw3 3.2 REQUIRED) find_package(OpenGL REQUIRED) target_include_directories(myapp ${OPENGL_INCLUDE_DIR}) target_link_libraries(myapp ${OPENGL_gl_LIBRARY}) target_link_libraries(myapp ${OPENGL_glu_LIBRARY}) ,该数据类型将不会对您。那将是最简单的解决方案。

要转换数据,可以这样进行:

timestamp without time zone

答案 1 :(得分:0)

基于此dba.stackexchange.com问题。显然,PG将时间戳存储为UTC时间,然后将其转换为会话时区。从我收集到的信息来看,由于我的时间戳不包含时区信息,因此我需要告诉PG,所存储的时区是UTC,然后将其转换为所需的任何本地时间,因此是这样的:

SELECT my_timestamp_in_utc AT TIME ZONE 'UTC' AT TIME ZONE 'America/Denver' as my_local_time FROM my_table;

这有点冗长,但是我现在要继续。