2017-01-17 170 views
0

當我執行輸出TIMESTAMP WITH TIME ZONE列的SELECT語句時,它不包括輸出中的時區。它只是在將時區轉換爲當地時區之後輸出沒有時區的日期和時間。獲取postgres以UTC顯示所有TIMESTAMP WITH TIME ZONE列

我有2個問題:

  • 如何獲得所有TIMESTAMP WITH TIME ZONE列始終顯示在輸出自己的時區,而不是忽略它的默認?
  • 如何讓所有的TIMESTAMP WITH TIME ZONE列以默認時區UTC輸出?我知道有一些方法可以在每個查詢的基礎上執行此操作,但是我希望在每種情況下都需要修改任何查詢。所以服務器設置可能?
+2

*當我這樣做,輸出一個SELECT語句中的' TIMESTAMP WITH TIME ZONE「列,它不包含輸出中的時區。* - 這幾乎肯定是由您的客戶端引起的,PostgreSQL本身會打印出TI時區「(https://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-TIMEZONE)設置的時區中的」MESTAMP WITH TIME ZONE「值 - [f .EX。看看](http://rextester.com/WQEP6239) – pozs

+0

它說缺省值是'GMT',這是我想要的,但它在'postgresql.conf'中被覆蓋。但我沒有那個文件。確定它不是默認使用本地系統時區?只有相關的東西是'/ usr/share/postgresql/postgresql.conf.sample'。所以不知道它被覆蓋的地方以及如何改回它。這是一個新安裝的系統,所以它不會像舊文件那樣可能會改變某處的某個配置。 – user779159

+0

如果您按照以下鏈接瞭解更多信息,則會描述基於'libpq'的客戶端在連接時使用'PGTZ'環境變量發出'SET TIME ZONE'命令。它通常是*默認安裝配置使用服務器自己的時區。 – pozs

回答

1

的一列:

SELECT colname AT TIME ZONE 'UTC' FROM tablename; 

所有

SET TIMEZONE TO 'UTC'; 

也看到ALTER ... SET ......

+0

「設置時區爲'utc''是否僅爲會話或永久改變事物,甚至是其他會話?我正在尋找永久的東西,而不是每次都設置它。 – user779159

+0

只有當前會話,需要修改用戶以影響將來的會話。 https://www.postgresql.org/docs/9.6/static/sql-alteruser.html – Jasen

相關問題