我有一个只有两个字段的表(在SQLite3中,但我可以使用PostgreSQL或SQLServer),它有一个datetime和一个int值(一个房间的温度),如下所示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<ul>
<li>abc</li>
<li>def</li>
<li>ghi</li>
</ul>
在示例中,我每分钟都有一个温度。
这用于监控其他系统的温度,但我也喜欢在网页中使用python(flask)显示它,但是在网页中显示温度并不重要分钟,但每10分钟或每小时更好。
如何选择仅显示每10分钟(或另一个间隔)的温度?所以我的结果必须是:
+-----------------------------------+
| Table: Temperature |
+---------------------+-------------+
| Date | Temperature |
+---------------------+-------------+
| 2017-03-03 15:10:00 | 25 |
| 2017-03-03 15:11:00 | 25 |
| 2017-03-03 15:12:00 | 25 |
| 2017-03-03 15:13:00 | 25 |
| 2017-03-03 15:14:00 | 26 |
| 2017-03-03 15:15:00 | 26 |
| 2017-03-03 15:16:00 | 26 |
| 2017-03-03 15:17:00 | 26 |
| 2017-03-03 15:18:00 | 26 |
| 2017-03-03 15:19:00 | 27 |
| 2017-03-03 15:20:00 | 27 |
+---------------------+-------------+
答案 0 :(得分:3)
对于sql-server,你可以这样做:
select *
from temperature
where datepart(minute,[date])%10 = 0
对于postgres你可以使用这样的东西:
select *
from temperature
where cast(date_part('minute',date) as int) % 10 = 0;
都返回:
+---------------------+-------------+
| date | temperature |
+---------------------+-------------+
| 2017-03-03 15:10:00 | 25 |
| 2017-03-03 15:20:00 | 27 |
+---------------------+-------------+
sql server rextester demo:http://rextester.com/DXMCK81428
postgres rextester演示:http://rextester.com/NAXX57760
答案 1 :(得分:1)
SELECT * FROM table LIMIT -1 OFFSET 10
从此post
答案 2 :(得分:1)
select * from temperature where substr(date,16,1)='0' order by date
改进可以是返回每十分钟的平均温度。这也可以使其更加强大,以防止丢失的问题:
select
'From '||min(date)||' to '||max(date) period,
sum(1) meassurements,
avg(temp) avg_temp
from temperature
group by substr(date,1,15)
order by 1
将15替换为14以显示小时时段。
下一步可能是显示完全错过预测的时期。这也可以只用一个查询。我不会在这里表明。