不精确搜索最近的时间值

时间:2011-07-20 18:25:57

标签: mysql sql search arraylist fuzzy-search

我正在寻找一种以编程方式和语法高效的方式来搜索基于时间戳的值。基本上我想找到最接近的时间戳匹配...

比如我在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 ...我该如何实现这个?我在这张桌子上有数百万行,我在想像levenshtein dist这样的东西会太慢......?

干杯!

3 个答案:

答案 0 :(得分:8)

怎么样:

SELECT id, MIN(ABS(time(time) - time("4:04:35"))) FROM table

答案 1 :(得分:1)

忍受我,我更习惯于Oracle,如果有必要,日期可以像数字一样操作,但我认为你应该寻找具有与搜索日期差异最小的日期的行。差异可能是积极的或消极的,因此需要ABS()来处理这个问题。

怎么样

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

如果看起来没问题,则必须选择具有最小[差异]

的ID

答案 2 :(得分:0)

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