sql - mysql - 按一天中的小时搜索时间戳

标签 sql mysql database

我有一个名为 updatetime 的列,它是一个 timestamp。因此,例如,平均外观值可以是:2011-02-01 09:00:51。我希望能够搜索并返回一天中特定时间的所有结果,而不管日期如何。

例如,如果我在列中搜索值 BETWEEN 09:00:00 AND 09:59:99,它将返回:

2011-02-01 09:00:51
2011-01-31 09:20:51
2011-01-11 09:55:44
etc....

SELECT * FROM table WHERE updatetime ......

想法?

最佳答案

您可以使用 HOUR()功能:

SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9

唉,这个查询的性能将可怕,一旦你超过几千行 - 函数不可索引,所以每次运行这个查询时都会进行全表扫描。

我们在类似情况下所做的:我们创建了另一个列updatetime_hour,对其进行索引,并在插入时填充它(并在更新时更新);然后查询变得很快:

SELECT * FROM 'table' WHERE `updatetime_hour` = 9

是的,我们已经对数据进行了非规范化,这需要更多的内部管理,但我还没有看到更快的解决方案。 (我们考虑并测量了插入和更新触发器以从 updatetime 填充 updatetime_hour,但为了性能决定不这样做;看看它们是否对您有用。)

关于sql - mysql - 按一天中的小时搜索时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865753/

相关文章:

mysql - 在按 group by 子句分组的每个组中仅选择 3 个具有 uniq 属性的第一个加入的项目

mysql - 呈现 :edit causes form URL to change/fail after update

database - SSH 隧道在 DataGrip 中不起作用

java - 如何使用java类在jsp页面中显示数据库中的值?

sql - 使用 powershell 为单个事务中的多个文件调用 sqlcmd

mysql - 选择具有特定值的行之后的行

mysql - 它没有在查询中显示任何结果

sql - 如何根据 BigQuery 中另一列的条件显示值的计数

javascript - 使用多种类型的数据发布请求

javascript - SpreadSheetApp 使用 JS 将值附加到特定单元格