2017-05-02 3 views
0

에서 TRUNC의 날짜 결과 질의 : 없음장고 : 나는 다음과 같은 모델을 가지고 없음

,691에서

statistics = Statistic.objects.filter(id=1) 
    .annotate(timestamp=Trunc('timestamp_start','day', output_field=DateTimeField())) 
    .values('timestamp') 
    .annotate(usage_start = Min('usage_start')) 

타임 스탬프 결과 363,210

검색어 세트 [{ 'usage_start': 10 진수 ('136.972'), '타임 스탬프': 없음}]

내가 디버거를 연결하고이

처럼 내 통계 테이블의 첫 번째 기록을 확인
Statistics.objects.all()[0].timestamp_start 

그것을 반환

datetime.datetime (2016, 12, 22, 6, 0)

01,235 16,

이 문제에 직면하기 전에 나는이 예외를 가지고 :

데이터베이스 잘못된 날짜 값을 반환했습니다. 데이터베이스와 pytz에 대한 표준 시간대 정의가 설치되어 있습니까?

나는 pytz를 설치했습니다. 그러나이 문제를 어떻게 해결할 것인지 전혀 모른다. 값이 잘못 되었습니까? 어쨌든 결국에는 settings.py의 use_tz를 false로 설정했습니다. 예외는 사라졌지만 trunc은 아무 것도 반환하지 않습니다. 이것이 문제의 원인입니까?

p.s : 내 환경 파이썬 3, 장고은 SQL 라이트 데이터베이스 창

답변

0

당신은 아마 MySQL의에 시간대 데이터를로드하지 않았습니다. TruncDate는 해당 시간대의 CONVERT_TZ 기능을 사용하며, 시간대 데이터를 사용할 수없는 경우 NULL을 반환합니다. 당신은 평가하여 SQL 쿼리가 사용을 확인할 수있는 다음과 같은 :

str(statistics.query) 

윈도우 로딩 시간대 데이터에 대한 지침은 여기에서 찾을 수 있습니다 :

Linux에서이 문제가 발생하여이 다른 StackOver에 표시된대로 해결했습니다. 흐름 게시물 :

+0

이 질문에 대해 잊어 버렸습니다. 그러나 당신 말이 맞습니다. 나는 django의 소스 코드를 파헤 치기 시작했다. 거기서 실제로 작동하려면 시간대가 필요하다는 것을 알았습니다. 그러나 당신이 대답 해 주셔서 감사합니다, 잘하면 다른 사람들을 도울 것입니다. –

관련 문제