4

タイムスタンプに基づいて値を検索するための、プログラム的および構文的に効率的な方法を探しています。基本的に、最も近いタイムスタンプの一致を見つけたいです...

たとえば、私が持っているMySQLテーブルで次のように言います。

ID    TIME    Blob
1    4:03:10    abc
2    4:04:30    def
3    4:04:45    ghi

そして、4:04:40の時間に基づいてこのテーブルをクエリしたいと思います。レコードID#3を返したい... 4:04:35を検索した場合、ID#2を返したい...これを実装するにはどうすればよいですか?このテーブルには何百万もの行があり、レーベンシュタイン距離のようなものは遅すぎると思っていました。

乾杯!

4

3 に答える 3

8

どうですか:

SELECT id, MIN(ABS(time(time) - time("4:04:35"))) FROM table
于 2011-07-20T19:21:25.463 に答える
1

我慢してください。必要に応じて日付を数字とまったく同じように操作できるOracleに慣れていますが、検索日との差が最も小さい日付の行を探す必要があると思います。差は正または負になる可能性があるため、それを処理するにはABS()が必要になります。

どうですか

SELECT table.id, 
       ABS(TIMESTAMPDIFF(SECOND, table.time, [datetime.now])) as difference
FROM table

それで問題ないように見える場合は、[差]が最小のIDを選択する必要があります

于 2011-07-20T19:04:58.887 に答える
0

SELECT MIN(time)FROM table WHERE TIME> [datetime.now]

于 2011-07-20T18:32:39.397 に答える