2016-09-15 1 views
1

십진수 (160919)로 리턴하는 존 십진수 값을 기준으로 레코드를 필터링하려고합니다. 어떻게 날짜에 대해 필터링하려면이 옵션을 사용할 수 있습니다 (예 : 160919)를 :pyodbc를 사용하여 iSeries 데이터베이스를 조회하는 데이터 변환 - 변환 오류

#connect to APlus 
import pyodbc 
import time 
import cursor as cursor 


today = int(time.strftime("%y%m%d")) 
whatisit = type(today) 
print whatisit 
cnxn = pyodbc.connect('DSN=aplus; uid=username;pwd=password') 
cursor = cnxn.cursor() 
query = """ select OHORNO, OHRSDT 
      from ORHED 
      where OHCSNO = 206576 and CAST(OHRSDT AS INT) = '$[today]'""" 
cursor.execute(query) 
row = cursor.fetchall() 
if row : 
    print(row) 

print ("Today : " + today) 
+0

후세 이외의 사항이 있으면 ORHED 테이블의 OHRSDT 필드와 '$ [today]'표현식의 해결 된 값에 대해 DDL을 게시하십시오. 예 : 'query '라는 이름의 변수에 문자열 결과를 부여함으로써 다음과 같은 결과를 얻을 수 있습니다 :'... and CAST (OHRSDT AS INT) ='160919 '' 참고 : 리터럴 선택 값을 [표시된] 다른 방법보다 열과 일치하지만 리터럴이 암시 적으로 캐스팅되기 때문에 선택적입니다. – CRPence

답변

0

날짜의 끝에 공백 인이 결국 다음은 내가 주문 데이터를 추출하기 위해 사용하고 코드입니다 기록에. 저는 Left (OHEXDT, 6)를 사용하여 비교했으며 모든 것이 예상대로 작동합니다.

이것은 실제로 고립 된 발생에 대해서만 작동 한 다음 실패했습니다.

나는 지금 비교할 필요가있는 형식으로 숫자를 추출하기 위해 하위 문자열을 사용하고 있습니다.

where OHCSNO = 206576 and integer(substr(OHESDT,1,6)) = '160926'

감사합니다!

+0

'날짜 필드는 존 십진수 필드입니다 .' 그렇다면 끝 부분에 공백이 없어야합니다. 마지막으로 공백이 있으면 값이 명령문에 반환되기 전에 어떻게 든 추가되거나 DDS 소스 파일과 일부 프로그램이됩니다 현장에 나쁜 데이터를 넣고 있습니다. 어느 쪽이든, 예측할 수없는시기에 앞으로 비슷한 문제가 발생할 가능성이 있기 때문에 원인을 파헤쳐 야합니다. – user2338816

+0

@ user2338816 반환되는 데이터는 다음과 같습니다. (10 진수 ('160919')) 비교할 값으로 사용할 '160919'를 추출하려고합니다. 이게 당신이 볼 수있는 것입니까? 감사! – AlliDeacon

+0

YYMMDD 형식의 DECIMAL (6,0) 값인 것으로 보입니다. 즉, 주어진 세기의 숫자가 없습니다. 2016-09-19 또는 CURRENT DATE (잘못된 날짜 형식) 일 가능성이 있습니다. – user2338816

관련 문제