簡體   English   中英

如何將PostgreSQL數據庫中的時間戳轉換為用戶時區時間?

[英]How do I convert the time stamps from a PostgreSQL DB into user-time-zone times?

我在Web應用程序中使用SQLAlchemy和PostgreSQL。

我的SQLA模型大致定義如下:

class MyModel(Base):
    ts_field = Column(DateTime(timezone=True))
    # more here, obviously

我的Web應用程序用戶具有一個timezone屬性,該屬性尚未確定(這是問題的一部分),該屬性確定如何向他們顯示時間戳。 顯然,它們並不都在服務器的語言環境中,因此系統時區並不是完全有用的。

我希望有一種簡單的方法來獲取根據每個用戶所選擇的時區為每個用戶格式化的時間戳。

(我對時區轉換的許多術語有點模糊,因此,如果我含糊其詞地詢問我-我敢打賭我是!-請隨時發表評論並幫助我澄清一下!)

好的,當您創建帶有時區的時間戳(快捷方式名稱為timestamptz)時,pg將創建一個時間戳,並在存儲時在當前時區和GMT之間進行轉換。

拔出時,可以將時區設置更改為您想要將其更改為其他偏移量的任何值。 例如:

 smarlowe=# set timezone='est';
 SET
 smarlowe=# select now();
               now              
 2010-11-30 00:38:32.683625-05
 (1 row)

 smarlowe=# set timezone='mst'; 
 SET
 smarlowe=# select now();
               now              
 2010-11-29 22:38:48.293708-07

您可以使用“在時區”命名法來縮短此時間:

smarlowe=# set timezone='mst';
SET
smarlowe=# select now();
              now              
-------------------------------
 2010-11-29 22:40:15.854833-07
(1 row)

smarlowe=# select now() at time zone 'est';
          timezone          
----------------------------
 2010-11-30 00:40:17.243828

無需一遍又一遍地設置每個時區,只需每次在語句中根據正確的時區即可。

您可以使用pytz進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM