2016-09-15 8 views
1

10進数(160919)として戻されるZoned Decimal値に基づいてレコードをフィルター処理しようとしています。どのように私は、日付(例: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のDDLと '$ [today]'の式の解決された値を投稿するように質問を更新してください。例えば'query 'という名前の変数を代入するための文字列結果を与えることで、おそらくこれは次のような効果があります:' ... and CAST(OHRSDT AS INT)=' 160919''注意:リテラル選択値を[表示されている]他の方法よりも列に一致しますが、リテラルが暗黙的にキャストされるため、これはオプションです。 – CRPence

答えて

0

は、日付の末尾にスペースであることがありしまいましたレコードで。私はLeft(OHEXDT、6)を使用して比較し、すべてが期待どおりに機能しています。

これは実際には分離されたオカレンスでのみ機能し、失敗しました。

私は現在、部分文字列を使用して、それらを比較するために必要な形式の数字を抜き出しています。

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

ありがとう!

+0

'日付フィールドはゾーニングされた10進フィールドです.'もしあれば、末尾に空白はありません。後続のスペースが何らかの形で追加されてから、値がステートメントに返されるか、またはDDSソースファイルといくつかのプログラムフィールドに悪いデータを入れています。いずれにしても、予測不可能な時期に将来同様の問題が発生する可能性があるため、原因を突き止める必要があります。 – user2338816

+0

@ user2338816返されるデータは次のとおりです。(10進数( '160919')、) '160919'を抽出して比較する値として使用しようとしています。あなたはこれが可能であると考えていますか?ありがとう! – AlliDeacon

+0

これは、YYMMDD形式のDECIMAL(6,0)値のようです。つまり、世紀の数字は与えられていません。 2016年9月19日、つまりCURRENT DATEのように見えるかもしれません。 – user2338816

関連する問題