我正在创建一个包含测量表的数据库(在MySQL中)。对于每个测量,我想存储它所引入的DateTime。为了在应用程序中显示不同间隔的图(日/周/月/年的测量值),我想要采样我拥有的数据点,所以我可以返回e。 G。全年30个数据点以及日/小时。这与股票价格图表相同:
stock price plot for 1 day VS stock price plot for 1 month
如您所见,两张图片中的数据点数量相同。
那么如何通过SQL在MySQL的时间跨度内选择x个条目?
我的数据如下:
+====+====================+=============+==========+
| id | datetime | temperature | humidity |
+====+====================+=============+==========+
| 1 | 1-15-2016 00:30:00 | 20 | 40 |
+----+--------------------+-------------+----------+
| 2 | 1-15-2016 00:35:00 | 19 | 41 |
+----+--------------------+-------------+----------+
| 3 | 1-15-2016 00:40:00 | 20 | 40 |
+----+--------------------+-------------+----------+
| 4 | 1-15-2016 00:45:00 | 20 | 42 |
+----+--------------------+-------------+----------+
| 5 | 1-15-2016 00:50:00 | 21 | 42 |
+----+--------------------+-------------+----------+
| 6 | 1-15-2016 00:55:00 | 20 | 43 |
+----+--------------------+-------------+----------+
| 7 | 1-15-2016 01:00:00 | 21 | 43 |
+====+====================+=============+==========+
让我们说,我总是想要两个数据点(实际上更多)。因此,在过去的半小时内,我希望数据库返回数据点1和4,在过去的十分钟内,我希望它返回6和7。
感谢您的帮助!
PS:我很抱歉我的英文错误
答案 0 :(得分:0)
好的,假设一个非常简单的系统方法,你可以得到任何定义时期的第一个和最后一个条目:
select *
from table
where mydatetime =
(select
max(mydatetime)
from table
where mydatetime between '2017-03-01' and '2017-03-15'
)
OR mydatetime =
(select
min(mydatetime)
from table
where mydatetime between '2017-03-01' and '2017-03-15'
)
答案 1 :(得分:-1)
我相信您的答案可以在以下位置找到:
https://stackoverflow.com/a/1891796/7176046
如果您要过滤掉不在您的查询将使用的日期/时间内的任何项目:
Select * from table where Date/Time is (What you want to sort by)