Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pyodbc查询iSeries数据库的数据转换-转换错误_Python_Sql_Ibm Midrange_Pyodbc_Db2 400 - Fatal编程技术网

Python 使用pyodbc查询iSeries数据库的数据转换-转换错误

Python 使用pyodbc查询iSeries数据库的数据转换-转换错误,python,sql,ibm-midrange,pyodbc,db2-400,Python,Sql,Ibm Midrange,Pyodbc,Db2 400,我试图根据返回为十进制(160919,)的分区十进制值筛选记录。如何使用此选项过滤日期(即:160919) 下面是我用来提取订单数据的代码: #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;

我试图根据返回为十进制(160919,)的分区十进制值筛选记录。如何使用此选项过滤日期(即:160919) 下面是我用来提取订单数据的代码:

#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)

在记录中日期的末尾有一个空格。我使用Left(OHEXDT,6)进行比较,一切都按预期进行

这实际上只适用于一个单独的事件,然后失败了

我现在使用子字符串以需要比较的格式提取数字

其中OHCSNO=206576,整数(substr(OHESDT,1,6))='160926'


谢谢

记录中的日期末尾有一个空格。我使用Left(OHEXDT,6)进行比较,一切都按预期进行

这实际上只适用于一个单独的事件,然后失败了

我现在使用子字符串以需要比较的格式提取数字

其中OHCSNO=206576,整数(substr(OHESDT,1,6))='160926'


谢谢

日期字段是一个分区十进制字段。
如果是,则结尾应该没有空格,除非在语句中返回值之前以某种方式添加了尾随空格,或者它是一个DDS源文件,并且某些程序正在将坏数据放入该字段。无论哪种方式,您都应该找出原因,因为将来可能会在不可预知的时间出现类似的问题。@user2338816返回的数据是:(Decimal('160919')),我正试图提取'160919'作为要比较的值。你认为这是可能的吗?谢谢这似乎是YYMMDD格式的十进制(6,0)值。也就是说,没有给出世纪数字。它看起来像2016-09-19或当前日期,格式可能不正确。@user2338816我知道,有没有办法提取该值的6位数部分?这是AS400系统中日期的标准格式。谢谢你的帮助。这还和OP有关吗?这似乎是远远不够的,现在还不清楚哪里有任何问题。是否需要从SELECT语句中的“日期”数值返回6个字符?或者您正试图让python将一个数值转换为6个字符?或者…?
日期字段是一个分区十进制字段。
如果是,则末尾应该没有空格,除非在语句中返回值之前以某种方式添加了尾随空格,或者它是一个DDS源文件,并且某些程序正在将坏数据放入该字段。无论哪种方式,您都应该找出原因,因为将来可能会在不可预知的时间出现类似的问题。@user2338816返回的数据是:(Decimal('160919')),我正试图提取'160919'作为要比较的值。你认为这是可能的吗?谢谢这似乎是YYMMDD格式的十进制(6,0)值。也就是说,没有给出世纪数字。它看起来像2016-09-19或当前日期,格式可能不正确。@user2338816我知道,有没有办法提取该值的6位数部分?这是AS400系统中日期的标准格式。谢谢你的帮助。这还和OP有关吗?这似乎是远远不够的,现在还不清楚哪里有任何问题。是否需要从SELECT语句中的“日期”数值返回6个字符?或者您正试图让python将一个数值转换为6个字符?或者…?如果只是为了后代,请更新问题以发布表ORHED字段OHRSDT的DDL,以及表达式“$[today]”的解析值;e、 g.通过为名为
query'的变量赋值提供字符串结果,类似的,可能是这样的效果:
…和CAST(OHRSDT as INT)='160919'`注意:最好强制转换文本选择值以匹配列,而不是另一种方式[如图所示],但这是可选的,因为文字将被隐式转换。如果不是为了后代,请更新问题以发布表ORHED的字段OHRSDT的DDL,以及表达式“$[today]”的解析值;e、 g.通过为名为
query'的变量赋值提供字符串结果,类似的,可能是这样的效果:
…和CAST(OHRSDT as INT)='160919'`注意:转换文本选择值以匹配列比另一种方式更好,但这是可选的,因为文本将被隐式转换。