gpt4 book ai didi

MySQL - 在一个月的每一天选择最接近特定时间的行

转载 作者:行者123 更新时间:2023-11-29 00:47:58 30 4
gpt4 key购买 nike

假设我有一个包含两列的表格

TIMESTAMP 类型的时间戳

FLOAT 类型的 A

此表是由外部应用程序创建和更新的,因此插入和更新不在我的控制范围内。表格设计不能以任何方式更改。

我需要做的是为过去一个月的每一天选择最接近上午 10 点和之前的每个条目。

提前致谢。

最佳答案

内部预查询应该以每年/每月为基础,在您当前所在的月份之前。这是由格式化的“YYYY-MM-01”日期创建的 SQLVariable 强制执行的,例如今天。 .. 2012-03-19,只保留年/月但强制 01。这也意味着时间戳为 12:00:00 am(午夜)。 NEXT @ 变量用于确定刚刚计算的那个月的第一个月...因此是 2012-02-01。这会为针对时间戳/浮点值表查询的 WHERE 子句构建变量。

现在,您可以获得最大时间,仅按时间戳的公共(public)日期部分分组,但保留条目的完整实际日期和时间,其中条目的 HOUR() 在上午 10 点之前...

从那里,重新加入原始表,其中最终“LastPerDay”时间与每天的时间相匹配。现在,如果同一天的实际最后一个时间戳条目实际上有多个精确时间条目,粒度为 hh:mm:ss(或任何精度)

select
PreQuery.JustTheDate,
YT2.FloatColumnName
from
( select
Date_Format( YT.TimeStampColumn, '%Y-%m-%d' ) JustTheDate,
max( YT.TimeStampColumn ) as LastPerDay
from
( select @FirstOfThisMonth := Date_Format( '%Y-%m-01' ),
@FirstOfPriorMonth := Date_Sub( @FirstOfThisMonth, interval 1 month ) ) sqlvars,
YourTable YT
where
YT.TimeStampColumn >= @FirstOfPriorMonth
AND YT.TimeStampColumn < @FirstOfThisMonth
AND Hour( YT.TimeStampColumn ) < 10
group by
`JustTheDate`
order by
`JustTheDate` DESC ) PreQuery

JOIN YourTable YT2
ON PreQuery.LastPerDay = YT2.TimeStampColumn

关于MySQL - 在一个月的每一天选择最接近特定时间的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773236/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com