对于特定的日期时间,在 [关闭] 之前和之后查找日期时间最近的记录

     2023-02-24     52

关键词:

【中文标题】对于特定的日期时间,在 [关闭] 之前和之后查找日期时间最近的记录【英文标题】:For a particular datetime, find a record with the closest datetime before and after [closed] 【发布时间】:2021-07-19 08:14:53 【问题描述】:

让我们有一个 MySQL 数据库表,其中包含一个 DateTime 列 when。这样的列可以携带除 NULL 之外的任何 DateTime 值。

如何创建一个包含列 whenwhenAwhenB 的表,并且所有全分钟 DateTime 值 (YYYY-MM-DD HH:MM:00) 都在最小值和最大值之间when 值和 whenA 是最接近的 DateTime 或之前,whenB 是最接近的 DateTime 或之后 when 值?如果存在确切的when 值,则whenAwhenB 将与when 相同。如果不存在 on or before 或 on or after 的任何记录,则将 NULL 分别填入whenAwhenB

显然,有很多可能的方法来实现它,但问题是什么应该是最有效的?

【问题讨论】:

【参考方案1】:

您可以使用递归 CTE 构造值。然后你可以使用相关的子查询来得到你想要的:

with recursive cte as (
  select from_unixtime(floor(unix_timestamp(min(whent)) / 60) * 60) as minw,
         max(whent) as maxw
      from t
      union all
      select minw + interval 1 minute, maxw
      from cte
      where minw < maxw
     )
select minw,
       (select max(t2.when)
        from t t2
        where t2.when = cte.minw
       ) as when,
       (select max(t2.when)
        from t t2
        where t2.when <= cte.minw
       ) as when_before,
       (select min(t2.when)
        from t t2
        where t2.when >= cte.minw
       ) as when_after
from cte;

请注意,when 是一个非常糟糕的列名称,因为它是 SQL 关键字和 MySQL 中的保留字。

Here 是一个 dbfiddle。

我应该注意,如果您有某种数字或计数表,也可以使用它。

【讨论】:

围绕特定日期但年份不断变化的访问查询[关闭]

】围绕特定日期但年份不断变化的访问查询[关闭]【英文标题】:AccessQueriessurroundingspecificdateyetchangingyear[closed]【发布时间】:2017-03-0414:04:17【问题描述】:我正在帮助客户处理他们的数据库,但在生成查询部分的条件时遇到了... 查看详情

MySQL从父表中查找创建日期在日期之前和之后的子记录

】MySQL从父表中查找创建日期在日期之前和之后的子记录【英文标题】:MySQLfindchildrecordswherecreateddateisbeforeandafterdatefromparenttable【发布时间】:2020-10-2201:40:17【问题描述】:我使用的是MySQL8.0版。我有2张桌子:approvals和activitiesapp... 查看详情

正则表达式在字符串中任何特定单词之前和之后查找特定单词

】正则表达式在字符串中任何特定单词之前和之后查找特定单词【英文标题】:regextofindaspecificwordbeforeandafteranyspecificwordinstring【发布时间】:2021-11-2123:38:19【问题描述】:我需要一个正则表达式,它可以在任何其他特定单词(... 查看详情

如何使用“查找”来搜索在特定日期创建的文件? [关闭]

】如何使用“查找”来搜索在特定日期创建的文件?[关闭]【英文标题】:Howtouse\'find\'tosearchforfilescreatedonaspecificdate?[closed]【发布时间】:2010-09-1413:20:32【问题描述】:如何使用UNIX命令find搜索在特定日期创建的文件?【问题讨... 查看详情

获取在特定日期创建和/或修改的存储过程列表?

】获取在特定日期创建和/或修改的存储过程列表?【英文标题】:Getthelistofstoredprocedurescreatedand/ormodifiedonaparticulardate?【发布时间】:2012-09-2811:20:34【问题描述】:我想查找我创建了哪个存储过程,还想查找我在特定日期(例如2... 查看详情

获取在特定日期之前创建且在该日期之后未引用的 ID

】获取在特定日期之前创建且在该日期之后未引用的ID【英文标题】:GettingIDswherecreatedbeforeaspecificdateandnotreferencedafterthatdate【发布时间】:2016-10-2117:01:15【问题描述】:我正在尝试从查询中获取ID列表,该查询取决于ID引用列和... 查看详情

在特定日期之后获取唯一 ID 的 SQL 查询

】在特定日期之后获取唯一ID的SQL查询【英文标题】:SQLquerytogettheuniqueID\'safteraspecificdate【发布时间】:2021-08-1711:32:49【问题描述】:我有一个名为test的表。每周一我将运行我的自动化脚本来将新ID添加到表中。例如:如果我在8... 查看详情

计算SQL中特定事件之前和之后的事件数?

】计算SQL中特定事件之前和之后的事件数?【英文标题】:CountnumberofeventsbeforeandafteraparticulareventinSQL?【发布时间】:2018-02-1315:53:43【问题描述】:我有一个包含日期和事件的表格。有一个名为“A”的事件。我想知道在SqlBigquery... 查看详情

查找下周一的 NSDate [关闭]

...发布时间】:2013-08-1111:25:50【问题描述】:我想获取当前日期之后的下周一的日期。所以如果今天的日期是2013年8月9日(星期五),那么我想得到2013年8月12日的日期。我该怎么做?【问题讨论】:虽然这是一个简单的问题并且... 查看详情

设置特定日期和时间的通知[关闭]

】设置特定日期和时间的通知[关闭]【英文标题】:Setnotificationforspecificdateandtime[closed]【发布时间】:2016-01-0400:35:28【问题描述】:如何在不使用服务的情况下在androidstudio中创建特定日期和时间的通知?【问题讨论】:欢迎堆栈... 查看详情

在特定时区生成日期[重复]

...个时区字符串,例如“太平洋时间(美国和加拿大)”。对于特定日期(包括夏令时),我需要在UTC的那个时区获得相当于下午3点的时间。我该怎么办?例如,我需要在UTC时间找到12月3日PDT下午3点。【问题讨论】:Date能识别时... 查看详情

使用 Apache RewriteRule 和 RewriteCond 将替代内容设置到特定日期 [关闭]

】使用ApacheRewriteRule和RewriteCond将替代内容设置到特定日期[关闭]【英文标题】:SetalternatecontentuntilaspecificdatewithApacheRewriteRuleandRewriteCond[closed]【发布时间】:2013-04-1709:56:00【问题描述】:我需要在特定日期之前为一个正在建设的... 查看详情

查找特定日期范围内每天的门票总数

】查找特定日期范围内每天的门票总数【英文标题】:Findtotalnumberofticketsperdaywithinaspecificdaterange【发布时间】:2014-07-3008:47:50【问题描述】:我正在尝试编写一个允许我执行以下操作的查询:“查找特定日期范围内每天打开和关... 查看详情

有没有办法知道在特定日期和时间之后添加到 SQL 数据库中的记录数

】有没有办法知道在特定日期和时间之后添加到SQL数据库中的记录数【英文标题】:IsthereawaytoknowthenumberofrecordsaddedintotheSQLdatabaseafteraparticulardateandtime【发布时间】:2020-04-0914:21:56【问题描述】:该表没有任何日期时间列。我想... 查看详情

在用户日表中查找最近的购买日期

】在用户日表中查找最近的购买日期【英文标题】:Findmostrecentdateofpurchaseinuserdaytable【发布时间】:2018-09-2520:36:28【问题描述】:我正在尝试组合一个查询,该查询将获取每个用户最后一次购买的日期、购买金额和交易次数。我... 查看详情

在特定日期之前查询无值

】在特定日期之前查询无值【英文标题】:Querywithoutvaluebeforecertaindate【发布时间】:2015-03-0416:19:56【问题描述】:我正在接受数据库管理方面的培训,这是我第一次发帖,如果我在发帖时没有遵循标准程序,我深表歉意。我已... 查看详情

显示当前日期和两个特定日期之间天数的 SQL 查询

...的计数。财务期从月底前5天开始,例如3月27日至4月26日对于上述期间,如果日期是3月29日,则当天计数应为3 查看详情

如何在 Python 中的每个单元测试之前和之后运行特定代码

】如何在Python中的每个单元测试之前和之后运行特定代码【英文标题】:Howtoarunspecificcodebefore&aftereachunittestinPython【发布时间】:2015-06-0501:21:45【问题描述】:以下是我在文件中的测试结构。类设置测试01测试02测试03拆解我需... 查看详情