2010-11-29 2 views
0

여기 웹 응용 프로그램에서 SQLAlchemy와 PostgreSQL을 사용하고 있습니다. 다음과 같이PostgreSQL DB의 타임 스탬프를 사용자 시간대 시간으로 변환하려면 어떻게해야합니까?

내 SQLA 모델 (약) 정의 :

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

내 웹 응용 프로그램의 사용자가 누구의 형식 아직 지정하지 않은 (즉,이 질문의 일부) 그 시간을 표시하는 방법을 결정하는 timezone 속성이 우표. 그것들은 모두 서버의 로케일에있는 것이 아니기 때문에 분명히 시스템 시간대가 정확하지는 않습니다.

나는 선택한 시간대에 따라 각 사용자에 대해 형식이 지정된 타임 스탬프를 쉽게 얻을 수있는 방법을 원합니다.

(저는 시간대 변환 용어가 많아서이 모호한 질문을하는 경우 조금 혼란 스럽습니다. 그리고 저는 확신합니다. 제발 저에게 의견을 말하고 도와주세요. 명확하게!)

답변

0

pytz을 사용하면 전환을 수행 할 수 있습니다.

1

좋아요, 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 

단지마다에 따라 성명에서, 반복 각각의 시간대를 설정할 필요가 없습니다 적절한 시간대.

+1

꽤 멋지지만이 값을 검색하기 전에 SQLAlchemy 세션에서 어떻게 설정합니까? –

+0

(가치가있는 것을 위해, 나는 이것을 Pylons에서 실행하고있다.) –

+0

SQLAlchemy를 어떻게 만드는지 전혀 모른다. 절대 사용하지 마십시오. –

관련 문제