我有一个表,看起来像以下内容-本质上包含时间戳以及一些其他列:
WeatherTable
+---------------------+---------+----------------+ +
| TS | MonthET | InsideHumidity | .... |
+---------------------+---------+----------------+ |
| 2014-10-27 14:24:22 | 0 | 54 | |
| 2014-10-27 14:24:24 | 0 | 54 | |
| 2014-10-27 14:24:26 | 0 | 52 | |
| 2014-10-27 14:24:28 | 0 | 54 | |
| 2014-10-27 14:24:30 | 0 | 53 | |
| 2014-10-27 14:24:32 | 0 | 55 | |
| 2014-10-27 14:24:34 | 9 | 54 | |
.......
我正在尝试制定一个SQL查询,该查询以一定的任意粒度(例如,每15秒)返回某个时间范围内的所有行(这里没有问题).该数字始终以秒为单位,但不限于小于60的值.为了使情况更加复杂,时间戳不一定取决于所需的粒度,因此,不是简单地选择14:24:00的时间戳的情况. ,14:24:15、14:24:30等-时间戳记与每个值最接近的行需要包含在结果中.
例如,如果开始时间为14:24:30,结束时间为14:32:00,并且粒度为130,则理想时间为:
14:24:30
14:26:40
14:28:50
14:31:00
但是,对于每个时间而言都可能不存在时间戳,在这种情况下,应选择时间戳与那些理想时间戳中的每个时间戳最接近的行.如果两个时间戳距离理想时间戳相等,则应选择较早的一个.
该数据库是Web服务的一部分,因此目前我只是忽略SQL查询中的粒度,并稍后在(Java)代码中过滤掉不需要的结果.但是,就内存消耗和性能而言,这似乎并不理想.
有任何想法吗?