2009-03-12 7 views
1

Python CMS는 일부 날짜 값을 일반 "속성"테이블의 varchar 열에 저장합니다. 이 날짜 중 일부는 나중에 실제 날짜 열이있는 테이블로 이동됩니다. CMS 사용자가 잘못된 날짜를 입력 한 경우 마이그레이션이 "유효하지 않은 문자열 날짜"오류와 함께 실패 할 때까지 캐치되지 않습니다.Python에서 Oracle 날짜 확인

파이썬을 사용하여 CMS에 입력 한 모든 날짜가 유효한 Oracle 문자열 날짜 표현인지 어떻게 확인할 수 있습니까?

답변

5

파이썬을 사용하여 CMS에 입력 한 모든 날짜가 유효한 Oracle 문자열 날짜 표현인지 어떻게 확인할 수 있습니까?

나는 접근 방식을 조금 바꿀 것입니다. 파이썬이 원래의 날짜 입력을 가능한 한 용례로 분석 한 다음 날짜를 잘 알려진 표현으로 출력하십시오.

dateutil의 자유 파서가 시작하기에 좋은 장소가 될 수 있습니다

import dateutil.parser 
d= dateutil.parser.parse('1/2/2003') 
d.strftime('%d-%b-%y') 

잘 모르겠어요 '% D- % B- %'y는 여전히 실제로 오라클에 대한 올바른 날짜 형식이지만, 이상적으로 4 자리 연도가 있고 월 이름에 의존하지 않는 것이 이상적 일 것입니다. (트랩 : % b는 로켈에 따라 다르므로 영어 이외의 OS에서는 원하지 않는 달 이름을 반환 할 수 있습니다.) "strftime ('% Y- % m- % d')"TO_DATE (..., 'YYYY -MM-DD ') "가 필요합니다.

+0

저는 '% d- % b- % Y'(4 자리 연도)를 사용 하겠지만 당신은 로케일 의존성에 관한 것입니다. +1 좋은 제안을 제안합니다. –

1

오라클이 날짜로 인식하는 날짜 문자열의 형식은 데이터베이스의 구성 가능한 속성이므로 날짜에 대한 문자열의 암시 적 변환에 의존하는 것은 나쁜 형식으로 간주됩니다.

일반적으로 Oracle 날짜 형식은 'DD-MON-YYYY'이지만 항상 그런 식으로 설정되는 것은 아닙니다.

개인적으로 CMS는이 '속성'테이블에 'YYYY-MM-DD'와 같은 표준 형식으로 작성한 다음 DATE 열로 옮기는 작업이 to_date (값, 'YYYY-MM-DD') 문제가 없습니다.

-1

되도록 빨리 확인하십시오. 왜 Python CMS에 날짜를 날짜로 저장하지 않습니까?

'03 -04-2008 '과 같이 어떤 날짜인지 알기가 어렵습니다. 2008 년 4 월 3 일 또는 2008 년 3 월 4 일입니까? 미국인은 2008 년 3 월 4 일을 말하지만 네덜란드 사람은 2008 년 4 월 3 일을 말할 것입니다.