2016-09-15 65 views
1

我想基於以Decimal(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的DDL以及表達式'$ [today]'的解析值;例如通過給字符串結果分配名爲'query'的變量,就像這樣,也許這是效果:'...和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我收到的數據是:(小數('160919'),)我試圖提取'160919'作爲比較值。這是你認爲可能的東西嗎?謝謝! – AlliDeacon

+0

這似乎是YYMMDD格式的DECIMAL(6,0)值。也就是說,沒有給出世紀數字。它看起來像2016-09-19或CURRENT DATE,格式可能不正確。 – user2338816