【发布时间】:2013-10-14 23:21:11
【问题描述】:
我的问题更多的是“理论”而不是实际——换句话说,我并不是真的在寻找如何做某事的特定代码,而更像是关于如何做的建议。我已经考虑了一段时间,但无法提出一些可行的解决方案。 所以基本上,我有一个 MySQL 数据库,可以保存来自我的气象站的天气信息。
第一列包含测量的日期和时间(日期时间格式字段),然后是各种列,如温度、湿度等。我现在感兴趣的是温度。数据按日期和时间升序排序,这意味着最新的值始终插入到末尾。
现在,我要做的是使用 PHP 脚本,连接到数据库并查找一定间隔内的温度变化,然后找到最大值。换句话说,例如,假设我选择间隔 3h。然后我想从所有值中找出在这 3 小时(或 5 小时、1 天等)中温度变化最显着的时间。
问题是我真的不知道该怎么做。如果我只是从数据库中获取值,我会一个一个地获取值,但我想不出一种方法来获取一个值,比如从过去的电流中获取 3h。那么这很容易,只需减去它们并从当时的日期时间字段中获取日期,但是如何获取例如相隔 3 小时的值(另外,问题在于它不能只是一个特定的数字到过去的行数,因为数据保存的间隔不规则,范围在 5-10 分钟之间,因此过去 3 小时可能是不同的行数。
任何想法如何做到这一点?
非常感谢
【问题讨论】:
-
嗯,鉴于现在有 2 个答案可以回答不同的问题,也许需要澄清一下:您是否需要 (a) 与其他答案一样的最高温度 (b) 相对的最大变化到我的回答中的前一个测量值 (c) 只是最大范围 (
MAX() - MIN()),(d) 最大的 连续 变化(多条记录,连续的所有负或正偏移)或(e) 有什么不同? -
或者像 (f) 给定 whole 数据集,区间 N 的总差异最大,或者 (g) 给定 whole 数据集,哪个区间的 2 个连续记录之间的差异最大?
-
好的,我会尽力解释,对不起,我不是母语人士。
-
所以最好的方法,让我们说一个例子:时间 1 - temp 10C Time 2 - temp 12C Time 3 - temp 14C Time 4 - temp 13C Time 5 - temp 16C 现在假设有 1h时间上的差异,而不是我想扫描整个数据库并找到 T 的最大变化可以说是 1 小时,在这种情况下它将是最后一个时间间隔的 3C。所以我希望结果是开始和结束时间+实际变化值