2016-10-25 2 views
0

Django 1.9/Postgres 9.4 - date_ending이라는 모델 datetime 필드가 있습니다. my_item.date_ending으로 날짜 시간을 얻으면 데이터베이스에 직접 액세스 할 때와 다른 날짜와 시간을 제공합니다. 나는 settings.py를 설정했다 :장고 수정 시간없이 datetime을 얻는 방법?

TIME_ZONE = 'UTC' 
USE_I18N = False 
USE_L10N = False 
USE_TZ = False 

이것은 변화하는 표준 시간대 물건에서 정확한 것을 얻어야한다, 맞습니까? 기본적으로 장고는 시간대를 전혀 만지지 않기를 원합니다. 또한, 뭔가 완벽하게 달라질 수 있습니다 ...

datetime 필드 및 날짜 필드를 저장할 때. 날짜는 datetime과 다릅니다.

datetime_ = datetime.datetime.utcnow() 
datetime_date_ = datetime_.date() 

MyModel.objects.create(
    datetimefield=datetime_, 
    datefield=datetime_date_, 
).save() 

내 데이터베이스 :

 datetimefield    |  datefield 
-------------------------------+----------------- 
    2016-11-04 18:23:18.407671-07 |  2016-11-05 

????

도움주세요. 감사합니다

답변

0

당신의 postgres 데이터베이스는 UTC-07의 시간대로 구성되어 있으므로 해당 시간대의 날짜 시간을 저장하고 있으며 해당 시간대에 datetime을 저장하기 위해 7 시간을 "감합니다" , 하루 만에 끝납니다. 해당 날짜 시간을 UTC (+00) 날짜 시간으로 변경하면 2016-11-05 01:23:18.407671+00 또는 그와 비슷한 것이되고 날짜 필드와 일치합니다.

내가 실수하지 않는다면,이 datetimefield을 django의 ORM을 사용하여 검색하고 postgre의 콘솔에서 직접 가져 오지 않은 경우 장고가 사용하도록 구성된 UTC로 다시 변환해야합니다.

+0

대단히 감사합니다. PostgreSQL 9.4는 AZ/US의 전용 서버 시간으로 설정되었습니다. 내 db로 가서 ...'show timezone; '...을 입력하여 AZ/US 였는지 확인한 후 설정하여 UTC로 변경했습니다 ...'set timezone ='UTC ';' –

+0

@quaerereveritatem :) – dietbacon

관련 문제