Mysql 对最近时间值的不精确搜索

Mysql 对最近时间值的不精确搜索,mysql,sql,search,arraylist,fuzzy-search,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之类的东西会太慢吗

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

例如,在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之类的东西会太慢吗


干杯

从表中选择MINtime,其中TIME>[datetime.now]

我更习惯于Oracle,在Oracle中,如果需要,日期可以像数字一样进行操作,但我认为您应该查找与搜索日期差异最小的日期行。这种差异可能是正的,也可能是负的,所以需要ABS来解决这个问题

怎么样

SELECT table.id, 
       ABS(TIMESTAMPDIFF(SECOND, table.time, [datetime.now])) as difference
FROM table
如果看起来不错,那么您必须选择具有最小[差异]的ID

如何:

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

但是如果我搜索4:04:35,这将返回错误的ID值3而不是2,因此需要嵌套,即max<现在我担心可能有点慢…啊,错过了这一部分。我不确定MySQL是否有内置的东西可以做到这一点。如果没有,这可能是你能得到的最有效的。