【发布时间】:2017-11-09 07:29:18
【问题描述】:
我有这段代码,我在其中执行 sql 查询并获取两个 TIME 字段。现在我想将这两个与其他时间类型字段进行比较。我当前的代码如下
import datetime
def comp(time1,time2):
start_time_obj = datetime.datetime.strptime(time1, '%H:%M').time()
end_time_obj = datetime.datetime.strptime(time2, '%H:%M').time()
sql_select2 = "select TIME(Start_Time), TIME(End_Time) from table1"
result2 = cur.execute(sql_select2)
resultSet2 = cur.fetchall()
for Start_Time,End_Time in resultSet2:
if (Start_Time <= start_time_obj <= End_Time) or (Start_Time <= end_time_obj <= End_Time):
print("Great!")
continue
if __name__ == '__main__':
comp("08:00","10:00")
当我执行这个时,我得到TypeError: '<=' not supported between instances of 'datetime.timedelta' and 'datetime.time' 的错误。这个怎么去掉?
注意:这是数据库中的示例字段结构 - Start_Time 和 End_Time 都为“2017-06-16 08:06:00”。我想要做的是将上述字段中的时间部分与作为参数的时间进行比较
【问题讨论】:
-
Start_Time和End_Time的典型值是什么(在 Python 中,而不是在 DB 中)?他们显然从某个点返回了一个增量时间,您需要先弄清楚那个点是什么,然后才能比较它们。打印出它们的值应该会给你一个线索。 -
@zwer 这是数据库中的示例字段结构 - Start_Time 和 End_Time 的“2017-06-16 08:06:00”。我想要做的是将上述字段中的时间部分与作为参数的时间进行比较
-
数据库中的内容并不重要,重要的是您的数据库驱动程序(我们不知道是哪个驱动程序)对重要字段所做的 - 它显然会将其转换为
datetime.timedelta但您需要弄清楚获得该增量的起点是什么。这很可能是时代,但在从 Python 中将其打印出来(或在数据库驱动程序的文档中找到它对TIME字段的作用)之前,您无法确定。 -
@zwer 比较数据库中
DATETIME值的时间和python 代码中的正常时间值(如08:00)的最简单方法是什么? -
在您知道数据库驱动程序为 DATETIME、TIME 或任何其他 SQL 字段返回的类型之前,您无法知道如何比较它。检查您的数据库驱动程序的文档...