2017-10-13 13 views
1

2017-10-13 15:30:00.0000000 +00 (= %z 앞에 7 (7)이 문자열을 파이썬 날짜/시간 형식으로 변환하는 방법. 어떤 도움을 주시면 감사하겠습니다DateTimeOffset (7)은 (는) MSSQL에서 Python datetime을 좋아합니까?

dt=datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z') 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "C:\Program Files\Python36\lib\_strptime.py", line 565, in _strptime_datetime 
     tt, fraction = _strptime(data_string, format) 
     File "C:\Program Files\Python36\lib\_strptime.py", line 362, in _strptime 
     (data_string, format)) 
    ValueError: time data '2017-10-13 15:30:00.000000 +00' does not match format '%Y-%m-%d %H:%M:%S.%f %z' 

:

이 내가 가진 최신의 오류입니다.

답변

0

당신이 오래된 ODBC 드라이버를 사용하는 경우 (예를 들어, DRIVER=SQL Server 고대는) 당신은 항상 정확히 34 자입니다 DATETIMEOFFSET (7) 값의 캐릭터 라인 표현 얻어야한다 :

2017-10-13 15:30:00.0000000 +00:00 

모든 당신을 일곱 번째 소수점 자리를 트림하는 것입니다 필요 오프셋에서 콜론을 제거 ...

s = '2017-10-13 15:30:00.0000000 +00:00' 
f = s[:26] + s[27:31] + s[32:] 
print(repr(f)) 
# '2017-10-13 15:30:00.000000 +0000' 

를 ... 그리고 문자열

올바르게 구문 분석됩니다
dt = datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z') 
print(repr(dt)) 
# datetime.datetime(2017, 10, 13, 15, 30, tzinfo=datetime.timezone.utc) 

DATETIMEOFFSET 열을 인식하는 최신 ODBC 드라이버로 전환 한 다음 기본적으로 반환하면 pyodbc Output Converter function을 사용하여 처리 할 수 ​​있습니다.