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

干杯!

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 回答