当前位置: 首页 > 面试题库 >

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

汪翰墨
2023-03-14
问题内容

我有一个名为列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

las,一旦您查询了几千行,该查询的性能将非常 糟糕 -函数不可索引,因此每次运行此查询时都会进行全表扫描。

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

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

是的,我们已经对数据进行了非规范化,并且还需要更多的内务处理,但是我还没有看到更快的解决方案。(我们考虑并测量了插入和更新触发器,以填充updatetime_hourfrom
updatetime,但出于性能考虑而拒绝使用;请查看它们是否对您有用。)



 类似资料:
  • 问题内容: 我有一个时间戳记,我想知道是否有办法在PST中将其舍入到一天的开始。例如,ts:对应于,但是我想将其舍入为一个映射到的时间戳。我读了time.Time文档,但没有找到解决方法。 问题答案: 执行此操作的简单方法是使用上一个创建新内容,并且仅分配年份的月份和日期。看起来像这样; 这是一个表演例子;https://play.golang.org/p/jnFuZxruKm

  • 问题内容: 我有一个MySQL表,其中记录了员工的登录和注销时间。在“输入输出”列中,“ 1”代表登录,“ 0”代表退出。 是否可以使用单个查询检索用户一天中的总工作时间? 我尝试了很多,但都徒劳无功。我可以使用数组在PHP中执行此操作,但无法使用单个查询来执行此操作。 问题答案: (1-2 * in_out)项给每个登录事件一个-1因子,每个退出事件一个+1因子。该函数获取列的总和,然后GROU

  • 问题内容: 我有一个数据集: 我想基本上在一个小时内“拆分”这些时间间隔,例如: 到目前为止,这是我的代码(该想法的积分发给@DumitrescuBogdan,将通话数据分为15分钟间隔): 后半部分(在“全部合并”之后)不产生任何结果,前半部分产生以下结果: 谢谢,我是初学者。我了解第一部分;坦白地说,我不明白下半场 我愿意接受其他解决方案。 我正在使用MS-Access 2010 问题答案:

  • 问题内容: 我正在尝试按小时使用量从历史记录表中获取报告。表是; 我想通过组和在指定日期范围内的所有记录。 我使用了类似这样的查询,但是它并不能显示全部时间。 仅在有记录时显示。 问题答案: 您现有的查询可以简化为: 要显示 每一个 小时,包括那些没有数据,就需要外,其所有您想要的数据小时表连接。您可以使用以下命令在查询中建立这样的表: 但是,对于没有数据的组的处理实际上是业务逻辑的问题,最好将其

  • 问题内容: 我正在编写一个内核模块,该模块检查时间是否在两个指定的小时之间,并禁用输入的时间。这与我要确保我早点睡觉有关。(我知道我也可以使用许多不同的技术,包括cron等,但是我想学习内核编程…) 因此,作为第一个版本,我检查当前时间是否在开始和结束之间,这是通过模块的参数设置的。 因此,我的问题是:如何获得当前时间?由于我在内核空间中,因此无法访问标准库中的常规时间函数。我猜想我应该为此使用d

  • 问题内容: 全部, 我有一个带有称为时间戳记的列的MYSQL表。它的数据类型为“ 10/1/2009 3:25:08 PM”,“ 10/1/2009 3:30:05 PM”,“ 10/4/2009 3:40:01 PM”,等等.. 我想编写一个SQL查询来选择在两个日期之间出现的时间戳字段中的所有值。 userInput日期将没有时间部分。您能为此建议正确的MySQL查询语法吗?谢谢 问题答案: