我有一个城市的一般运输饲料规格数据数据库,它将午夜后的运输服务定义为小时> 24.因此,在stop_times表中,我们有很多次定义,例如25:00:00,26:00:00等。因为我需要在这个数据库的一部分上执行时间减法,我想我写了一个用户定义的python脚本来处理这个并使用python create_function sqlite命令将它与我的数据库相关联。
出于某种原因,当我运行查询时,我想到了这个数据集,我得到了
sqlite3.OperationalError: user-defined function raised exception
这是我写的时间减法函数来处理午夜之后的时间。我确定这是一团糟;如果你有任何关于如何更有效地处理这个的提示,我也很乐意听到这些。提前谢谢。
def time_delta(t1, t2):
old_arrival = t1.encode('utf-8').split(':')
old_departure = t2.encode('utf-8').split(':')
new_arrival_string = "2013-03-16 %s:%s:%s" % (int(old_arrival[0])-12, old_arrival[1], old_arrival[2])
new_arrival_format = "%Y-%m-%d %H:%M:%S"
arr = datetime.datetime.strptime(new_arrival_string, new_arrival_format)
new_departure_string = "2013-03-16 %s:%s:%s" % (int(old_departure[0])-12, old_departure[1], old_departure[2])
new_departure_format = "%Y-%m-%d %H:%M:%S"
dep = datetime.datetime.strptime(new_departure_string, new_departure_format)
difference = arr-dep
seconds = difference.seconds
if difference.days < 0:
difference = dep-arr
seconds = (-1) * difference.seconds
return seconds
答案 0 :(得分:0)
您是否可以更改数据库架构?如果是这样,回避这个问题的一种方法可能是存储到达和离开时间不是字符串,而是存储自午夜以来的整数秒数(好吧,“中午减去12h”,如规范定义的那样),并改变你所使用的任何工具用于加载数据库以转换stop_times.txt
中使用的“HH:MM:SS”格式。
这不仅可以为您提供一个不受任何24小时限制限制的停止时间的漂亮,规范表示,还可以简化计算时间间隔并在特定时间段内构建停止时间的数据库查询。