连接两个时间戳不相同的 MySQL 表

问题描述 投票:0回答:1

我有两个表“poolTemp”和“weather”。两个表都包含“timeStamp”和“tempC”列。我想用两个“tempC”加入表,但仅限于 poolTime.timeStamp 与 Weather.timeStamp 相差不超过 5 分钟时

poolTemp.timeStamp 数据每 5 分钟记录一次,weather.timeStamp 每小时记录一次

到目前为止,我有以下内容,但它并不完全返回匹配项......

SELECT DISTINCT poolTemp.time, poolTemp.tempC
FROM poolTemp
LEFT JOIN weather
ON TIMESTAMPDIFF(MINUTE,weather.time, poolTemp.time) < 15

我希望看到一个仅包含彼此在 15 分钟内的时间戳的表,但我看到了来自 poolTemp 的所有时间戳(每 5 分钟读取一次临时读数)。 谢谢

样本数据:

泳池温度:

time;tempC
2024-01-22 12:25:05;24.63 <-- SHOULD BE SELECTED
2024-01-22 12:20:05;24.58 <-- SHOULD BE SELECTED
2024-01-22 12:15:09;24.72
2024-01-22 12:10:05;24.58
2024-01-22 12:05:05;24.58
2024-01-22 12:00:09;24.72
2024-01-22 11:55:05;24.92
2024-01-22 11:50:04;24.59
2024-01-22 11:45:09;24.42
2024-01-22 11:40:05;24.48 <-- SHOULD BE SELECTED
2024-01-22 11:35:05;24.58 <-- SHOULD BE SELECTED
2024-01-22 11:30:09;24.58 <-- SHOULD BE SELECTED
2024-01-22 11:25:05;24.64 <-- SHOULD BE SELECTED
2024-01-22 11:20:05;24.74 <-- SHOULD BE SELECTED
2024-01-22 11:15:09;24.74
2024-01-22 11:10:05;24.53
2024-01-22 11:05:05;24.53 
2024-01-22 11:00:09;24.64
2024-01-22 10:55:05;24.84
2024-01-22 10:50:05;25.24
2024-01-22 10:45:09;25.47 <-- SHOULD BE SELECTED
2024-01-22 10:40:05;25.47 <-- SHOULD BE SELECTED
2024-01-22 10:35:05;25.47 <-- SHOULD BE SELECTED
2024-01-22 10:30:09;25.36 <-- SHOULD BE SELECTED
2024-01-22 10:25:05;25.36 <-- SHOULD BE SELECTED
2024-01-22 10:20:05;25.26 <-- SHOULD BE SELECTED

天气数据

time;tempC;
2024-01-22 12:34:02;10.50
2024-01-22 11:34:02;9.90
2024-01-22 10:34:02;9.09
2024-01-22 09:34:02;8.49
2024-01-22 08:34:02;8.26
mysql datetime join select datediff
1个回答
0
投票

最终是操作员错误,忘记从第二个表中选择。当我这样做时,数据是正确的!!

将 ABS() 插入到 timestampdiff() 函数中也有帮助......

SELECT distinct poolTemp.time, poolTemp.tempC, weather.tempC
FROM poolTemp
inner JOIN weather
ON ABS(timeSTAMPDIFF(MINUTE,weather.time, poolTemp.time)) < 15

现在显示:

time;tempC;tempC
2024-01-19 12:45:09;21.53;4.47
2024-01-19 12:40:05;21.48;4.47
2024-01-19 12:35:05;21.48;4.47
2024-01-19 12:30:09;21.48;4.47
2024-01-19 13:45:09;21.58;5.49
2024-01-19 13:40:05;21.58;5.49
2024-01-19 13:35:05;21.58;5.49
2024-01-19 13:30:09;21.58;5.49
2024-01-19 13:25:05;21.58;5.49
2024-01-19 13:20:05;21.58;5.49
2024-01-19 14:45:10;21.75;5.67
2024-01-19 14:40:05;21.75;5.67
2024-01-19 14:35:05;21.75;5.67
2024-01-19 14:30:09;21.75;5.67
2024-01-19 14:25:05;21.75;5.67
2024-01-19 14:20:05;21.75;5.67
2024-01-19 15:45:09;20.62;4.74
2024-01-19 15:40:05;20.72;4.74
2024-01-19 15:35:05;20.82;4.74
2024-01-19 15:30:09;20.82;4.74
2024-01-19 15:25:05;20.92;4.74
2024-01-19 15:20:05;20.92;4.74
2024-01-19 16:45:09;20.5;4.06
2024-01-19 16:40:05;20.5;4.06
2024-01-19 16:35:05;20.35;4.06
2024-01-19 16:30:09;20.35;4.06
2024-01-19 16:25:05;20.35;4.06
2024-01-19 16:20:04;20.35;4.06
2024-01-19 17:45:09;20.61;3.25
2024-01-19 17:40:05;20.61;3.25
2024-01-19 17:35:05;20.66;3.25
2024-01-19 17:30:09;125;3.25
2024-01-19 17:25:06;20.74;3.25
2024-01-19 17:20:05;20.74;3.25
2024-01-19 18:45:09;20.21;2.68
2024-01-19 18:40:05;20.21;2.68
2024-01-19 18:35:05;20.31;2.68
2024-01-19 18:30:09;20.31;2.68
2024-01-19 18:25:05;20.41;2.68
2024-01-19 18:20:05;20.41;2.68

将时间减少到 5 分钟即可得到这个

time;tempC;tempC
2024-01-19 12:35:05;21.48;4.47
2024-01-19 12:30:09;21.48;4.47
2024-01-19 13:35:05;21.58;5.49
2024-01-19 13:30:09;21.58;5.49
2024-01-19 14:35:05;21.75;5.67
2024-01-19 14:30:09;21.75;5.67
2024-01-19 15:35:05;20.82;4.74
2024-01-19 15:30:09;20.82;4.74
2024-01-19 16:35:05;20.35;4.06
2024-01-19 16:30:09;20.35;4.06
2024-01-19 17:35:05;20.66;3.25
2024-01-19 17:30:09;125;3.25
2024-01-19 18:35:05;20.31;2.68
© www.soinside.com 2019 - 2024. All rights reserved.