0

私は、真夜中以降の交通サービスを 24 時間以上と定義する都市の一般交通フィード仕様データのデータベースを持っています。など。このデータベースの一部で時間減算を実行する必要があるため、これを処理するユーザー定義の python スクリプトを作成し、python create_function sqlite コマンドを使用してそれをデータベースに関連付けることを考えました。

何らかの理由で、このデータセットに対して考えているクエリを実行すると、

sqlite3.OperationalError: user-defined function raised exception

これは、午前 0 時以降の時間を処理するために作成した時間減算関数です。私はそれが混乱していると確信しています。これをより効率的に処理するためのヒントがあれば、それも聞きたいです。前もって感謝します。

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
4

1 に答える 1

0

データベース スキーマを変更できますか? もしそうなら、この問題を回避する1つの方法は、到着時刻と出発時刻を文字列としてではなく、真夜中からの整数秒数(仕様で定義されているように、「正午から12時を引いたもの」)として保存し、使用しているツールを変更することです。を使用してデータベースをロードし、 で使用される「HH:MM:SS」形式から変換しますstop_times.txt

これにより、24 時間の制限に縛られない適切な標準的な停止時間の表現が得られるだけでなく、時間間隔の計算と、特定の期間内の停止時間のデータベース クエリの作成が簡単になります。

于 2013-04-03T22:37:32.527 に答える