MySQL select DATETIME 类似到分钟

2023-12-20

我必须比较两个表之间相对于同一时间的结果,但时间戳因记录方式而有所不同。 我想获得像这样的结果实施例1但我只得到带星号的值,如实施例2。 从比较中删除秒或选择与最接近的 DATETIME 值相对应的值的最佳方法是什么?

目前我正在使用这个查询:

SELECT Table1.TimeSTamp1, Table1.Param1, Table2.TimeStamp2, Table2.Param2 
    FROM Table1, Table2 
    WHERE ... conditions for the other parameters of Table1 and Table2... 
    AND Table1.TimeSTamp1 = Table2.TimeStamp2

热烈欢迎任何有关最佳实践的建议。


实施例1

TimeStamp1          ¦   Param1  ¦   TimeStamp2          ¦   Param2
2011-01-01 00:00:35 ¦   1       ¦   2011-01-01 00:00:35 ¦   a       *
2011-01-01 00:01:35 ¦   2       ¦   2011-01-01 00:01:35 ¦   b
2011-01-01 00:02:37 ¦   3       ¦   2011-01-01 00:02:35 ¦   c
2011-01-01 00:03:31 ¦   4       ¦   2011-01-01 00:03:35 ¦   d
2011-01-01 00:04:32 ¦   5       ¦   2011-01-01 00:04:35 ¦   e
2011-01-01 00:05:38 ¦   6       ¦   2011-01-01 00:05:35 ¦   f
2011-01-01 00:06:36 ¦   7       ¦   2011-01-01 00:06:36 ¦   g       *
2011-01-01 00:07:32 ¦   8       ¦   2011-01-01 00:07:35 ¦   h
2011-01-01 00:08:33 ¦   9       ¦   2011-01-01 00:08:35 ¦   i
2011-01-01 00:09:33 ¦   10      ¦   2011-01-01 00:09:33 ¦   l       *
2011-01-01 00:10:35 ¦   11      ¦   2011-01-01 00:10:35 ¦   m       *
2011-01-01 00:11:29 ¦   12      ¦   2011-01-01 00:11:31 ¦   n

lll 实施例2

TimeStamp1          ¦   Param1  ¦   TimeStamp2          ¦   Param2
2011-01-01 00:00:35 ¦   1       ¦   2011-01-01 00:00:35 ¦   a
2011-01-01 00:06:36 ¦   7       ¦   2011-01-01 00:06:36 ¦   g
2011-01-01 00:09:33 ¦   10      ¦   2011-01-01 00:09:33 ¦   l
2011-01-01 00:10:35 ¦   11      ¦   2011-01-01 00:10:35 ¦   m

这个 MySql 表达式将为您返回 DATETIME 值,并将秒数清零。

CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)

看看这个。https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format。所以你最终可能会得到这样的查询:

SELECT Table1.TimeSTamp1, Table1.Param1, Table2.TimeStamp2, Table2.Param2 
    FROM Table1
    JOIN Table2 ON  CONVERT(DATE_FORMAT(Table1.TimeStamp1,'%Y-%m-%d-%H:%i:00'),DATETIME)
                 =  CONVERT(DATE_FORMAT(Table2.TimeStamp2,'%Y-%m-%d-%H:%i:00'),DATETIME)
    WHERE ... conditions for the other parameters of Table1 and Table2... 

不过要小心。自动生成的时间戳有点像浮点数;当其中两个出现相同的情况时,这只是运气。将时间戳截断为分钟可能没问题,但最好将一个时间戳减去另一个时间戳,然后比较差异(或差异的绝对值)。

此外,此连接会很慢,因为它必须对每个值运行第二次截断函数,因此它不能使用任何索引。

您可以用一个时间戳减去另一个时间戳TIMESTAMPDIFF() https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff。不过要小心。该函数仅在时间戳相隔几天之内的秒级上正确工作;它毫无优雅地溢出(正如我痛苦地发现的那样)。

您可以尝试在插入时间戳时将时间戳截断为分钟。这会让你索引它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL select DATETIME 类似到分钟 的相关文章

随机推荐

  • 在 api 调用中更新 2 个猫鼬模式

    目前我正在尝试在 api 调用中更新两个不同的用户架构 第一个模式是登录用户模式 我们给它起一个名字 Tom 第二个模式是注册该应用程序的其他用户 我们给它一个名称 John 架构代码 架构 js var mongoose require
  • JPQL 中的 timestampdiff 等效项(不使用条件)

    我想在 JPQL 中使用以下 mysql 函数 TIMESTAMPDIFF YEAR some start date CURDATE 另外 我不必在 JPA 中使用 Criteria 因为我们正在遵循编写命名查询 JPQL 的实践 那么 这
  • Android studio 始终使用 JDK 7,不要切换到 JDK 8

    我遇到了一些有趣的问题 当我尝试通过单击来更改 JDK 时文件 gt 项目结构 gt SDK 位置 我将其更改为我的新版本 然后我点击OK然后再次打开此页面 它向我显示了以下内容 为什么不想换JDK 甚至我的 PATH 设置为 JDK 8
  • MFCC 的含义

    我有一个概念问题 我知道什么是梅尔标度以及它代表什么 而且我知道这种频谱图仍然包含太多我需要的信息 我认为如果我们想减少频谱图的信息数量 我们可以使用 MFCC 但我实在不明白MFCC是什么以及它代表什么 我在语音识别过程中使用 MFCC
  • 如何在保留子目录的同时拆分 git 存储库?

    我想要的是类似于这个问题 https stackoverflow com questions 359424 detach subdirectory into separate git repository 但是 我希望拆分为单独存储库的目录
  • F# ionide webshaperserverclient - 如何运行

    我跑步时遇到问题websharperserverclient来自 ionide 项目生成器的模板应用程序 并且在网上找不到任何如何操作的信息 我得到的最接近的东西是这个问题 https stackoverflow com questions
  • 纯JSP页面导航最佳实践?

    在我的 Web 应用程序的各个 JSP 页面之间实现导航链接的最佳方法是什么 假设我有一个list jsp显示项目列表 然后 用户单击其中一项以查看该项目的更多详细信息view jsp 现在我需要一个链接view jsp回到list jsp
  • 我可以使用模型绑定验证 HTTP 请求签名令牌和随机数吗?

    我正在使用 ASP NET MVC 设置一个端点 可以向该端点发出操作和检索数据的请求 基本上是一个 API 我使用 2 legged OAuth 模型来验证请求是否使用密钥和签名方法以及随机数表进行签名 以防止劫持 由于模型绑定在 ASP
  • PHP flock() - 幕后是什么?

    在与 PHP 源码搏斗了半个小时后 我放弃了 P 问题是 在 Gentoo Linux 系统上 PHP freeze 函数调用归结为什么系统调用 我遇到了一些问题 比如每 20 次循环迭代中阻塞 30 秒类问题 我想知道为什么会这样 exa
  • 为什么我在 vue js 中收到“无法读取未定义的属性‘状态’”错误

    我的 store index js 是 import Vue from vue import Vuex from vuex Vue use Vuex export default new Vuex Store state name Alic
  • 反应挂钩。定期运行 useEffect

    我需要定期获取数据并将其更新到屏幕上 我有这个代码 const temperature setTemperature useState useEffect gt fetch urlToWeatherData then function re
  • 从 Excel 中包含逗号分隔值的两个单元格中提取公共值

    有没有一种简单的方法可以从两个以逗号分隔的数字单元格中提取共同的数字 我有单元格 每个单元格中有 12 个逗号分隔的数字 它们并不都是唯一的 有些数字可以重复两次 但不能超过两次 数字都是正数 并且只能是一位或两位数字 我的数据是这样的 它
  • 解析“DateTime.Now”?

    我需要翻译这样的字符串 DateTime Now AddDays 7 转化为它们的等价表达式 我只对 DateTime 类感兴趣 Net 中是否有内置的东西可以帮助我做到这一点 或者我只需要编写自己的小解析器 您可以雇用FLEE http
  • 通知点击事件时的通话活动

    我想在用户下拉通知并点击该通知时调用该活动 我怎样才能做到这一点 Call setLatestEventInfo on the Notification对象 提供一个PendingIntent当他们点击通知抽屉中的您的条目时 就会开始您的活
  • Cypress:使用 cy.intercept() 检查是否尚未进行调用?

    使用 cy intercept 拦截 和存根 几个网络请求 到谷歌标签管理器 但希望在我的测试中尽早进行测试 然后再期望它们被调用 我将如何测试我正在拦截的两条路线haven t被叫了吗 Thanks 您可以利用cy spy命令 cy in
  • 如何在 django admin 中显示布尔属性

    众所周知 显示method在 Django 管理中将值返回为布尔值可以通过设置轻松完成boolean属性 class MyModel models Model def is something self if self something
  • Visual Studio 2022 挂起并显示“正在打开文件...”消息

    当我尝试打开 dbml 文件时 Visual Studio 2022 挂起并显示 正在打开文件 消息 当我打开任何其他文件时不会发生这种情况 我尝试通过以下方式解决这个问题 卸载Devexpress 卸载Visual Studio 2022
  • 通过过滤将消息从 Amazon SNS 路由到 SQS

    在 RabbitMQ 中 可以创建一个交换器 然后将其绑定到多个队列 每个队列都有一个路由键 这使得消息传递架构如下所示 message x foo msg q bar msg q msg logger q 客户端发布消息到message
  • 意外的关键字参数“缓冲” - python 客户端

    我收到错误 getresponse 收到意外的关键字参数 缓冲 完整的错误日志是 INFO Kivy v1 8 0 INFO Logger Record log in C Users Sudheer kivy logs kivy 14 08
  • MySQL select DATETIME 类似到分钟

    我必须比较两个表之间相对于同一时间的结果 但时间戳因记录方式而有所不同 我想获得像这样的结果实施例1但我只得到带星号的值 如实施例2 从比较中删除秒或选择与最接近的 DATETIME 值相对应的值的最佳方法是什么 目前我正在使用这个查询 S