我正在使用python脚本从 sqlite数据库。
我正在创建变量startDelta
,以从
变量名为program_startDate
。
当我使用此语句执行代码时,我的代码出现问题:
#get the programs list
cur.execute('SELECT channel, title, start_date, stop_date FROM programs
WHERE channel=?', [channel])
programList = list()
programs = cur
for row in programs:
program = row[1].encode('ascii'), str(row[2]), str(row[3])
program_startDate = str(row[2])
program_endDate = str(row[3])
programList.append(program)
cur.close()
idx = str(programList)
# find nearest half hour
viewStartDate = datetime.datetime.now()
viewStartDate -= datetime.timedelta(minutes = viewStartDate.minute % 30,
seconds = viewStartDate.second)
startDelta = program_startDate - viewStartDate
stopDelta = program_endDate - viewStartDate
我会得到一个错误: 类型错误:不支持-:“str”和“datetime.datetime”的操作数类型
错误就在这条线上:
startDelta = program_startDate - viewStartDate
stopDelta = program_endDate - viewStartDate
怎么解决这个问题?
根据从数据库表检索的数据类型。。。如果您有一个“long”(如上面对评论的回答中所述):
转换为日期时间对象:
program_startdate = datetime.strptime(str(row[2]), "%Y%m%d%H%M%S")
问题与错误状态完全一样。
program_startDate
和program_endDate
是字符串,您试图从中减去日期时间,这是python无法做到的。这些值是否作为日期时间存储在数据库中?
如果是,请使用:
而不是把它们转换成字符串。数据库引擎将把它们作为日期时间提供给您,错误将得到解决。
如果它们作为字符串存储在数据库中,use datetime.strptime根据它们存储的格式将它们转换为日期时间。
编辑:
OP将日期存储在数据库中,例如20140831170500。要解决此问题,请使用:
相关问题 更多 >
编程相关推荐