2017-12-20 5 views
0

Sybase 데이터베이스에 여러 varchar 및 datetime 필드가있는 ServerHistory 테이블이 있고 Python 코드베이스에서 데이터베이스에 연결하기 위해 pyodbc 라이브러리를 사용하고 있습니다.datetime 열에서 null을 가져올 수 없습니다. Python

이 테이블은 null datetime을 허용하고 updDate가 null 인 몇 가지 레코드가 있지만 이러한 레코드를 읽으려면 Python에서 sql을 실행할 때 updDate 필드에 null이 표시되지 않습니다.

대신 이전 날짜/시간 필드 인 liveDate의 값을 가져와 updDate로 채 웁니다. updDate를 선택하면 ValueError "year 0/any no.는 범위를 벗어났습니다."라는 메시지가 나타납니다.

연결 = pyodbc.connect ('connection_str') 결과 = connection.execute ("ServerHistory에서 updDate을 선택한 경우 서버 = \ 'SRVR1의 \'을") 대하여 fetchone()를

는 ValueError를이 :. 년 31,728가 발생한 경우 범위의

내가 파이썬은 그럼에도 불구하고 sqlalchemy can't read null dates from sqlite3 (0000-00-00): ValueError: year is out of range

에 따라 1 분 해 아래 시간을 허용하지 않기 때문에 오류가 어쩌면 일이 생각 난 아직도 날짜 때와 같이 널 얻기 위해 내 문제를 해결하는 방법을 이해하지 않습니다 쿼리를 실행합니다.

+1

시도한 내용 (코드)을 알려주십시오. SO에 관한 질문을하는 방법에 대한 도움말 페이지를 읽으십시오. – Yannis

+0

pyodbc [출력 변환기 기능] (https://github.com/mkleehammer/pyodbc/wiki/Using-an-Output-Converter-function)을 사용하여 원시 바이트를 캡처하고 바이트 파이썬의 'datetime'이 처리 할 수없는 날짜/시간에 해당합니다. –

답변

1

해킹 틱 :

사용 coalesce(updDate , date('0001/01/01') 당신이 pyodbc에서 수집 된 데이터를 사용할 때 select updDate, .. from ...하고 그러한 updDateNone로 취급합니다.

관련 문제