2009-03-16 2 views
4

현재 PHP에서 Django로 사이트를 변환하고 있습니다. 그러나 Python을 처음 접했을 때 저는 몇 가지 사실을 고심하기 위해 고심하고 있습니다.MySQL/Django의 날짜가 부분적으로 null입니다.

가 가끔 내 데이터베이스에 불완전한 날짜가 (즉 내가 하루 또는 월을 알 수 없습니다), 그래서 현재 세 개의 정수 필드가 있습니다 date_year, date_monthdate_day을.

MySQL은 '부분적으로 null'date 필드 (예 : 2004-04-00, 1994-00-00)를 허용했지만 장고는 '완전히'null로 취급합니다.

  • 16 March 2009 (완전 함)
  • March 2009 (알 수없는 일)
  • 2009 (알 수없는 일 및 월)
  • :

    나는 단지 다음과 같은 형식이 날짜를 표시 할거야

나는 적절한 date 필드를 MySQL에서 사용할 수 없다고 가정하고, 인위적인 0을 생성해야한다고 생각한다. 모델에서을 선택한 다음 사용자 정의 템플릿 필터를 사용하십시오. 누구든지 도울 수 있니?

답변

1

MySQL이 ALLOW_INVALID_DATES 모드에서 실행 중일 때 입력에 대한 유효성 검사를 수행하지 않으므로 잘못된 날짜를 저장할 수 있습니다. 이것은 표준 SQL에 대한 확장이며 Django는 데이터베이스 간 호환이 가능하기 때문에 이것을 지원하지 않습니다. 또한 Django는 날짜를 부분 날짜를 지원하지 않는 Python 날짜 객체로 변환합니다.

가장 좋은 방법은 열을 3 개로 분할하거나 날짜를 텍스트로 저장하고 직접 처리하는 것입니다.

3

두 datetimes를 범위로 저장할 수 있습니다. 한밤중에서 자정까지 "이 날에 언젠가"를 의미하고 범위가 한 달 전체에 걸쳐 있다면 그 사실을 아는 것입니다. 정확한 시간을 안다면 평등 할 것입니다.

1

나는 비슷한 문제에 대한 해결책을 찾고 있었지만 PostgreSQL을 사용했다.

Fuzzy date matching in PostgreSQL

아마 당신은 그런 일을 적응할 수 있을까? 벽이 좀 떨어져있어. 알아.

관련 문제