MySQL的数据排序,根据该时间间隔
以我MySQL数据库表有在每次10个分钟间隔的数据,前 //时间格式 “YYYY-MM-DD HH:MM:SS”MySQL的数据排序,根据该时间间隔
Time | value
2012-03-02 1:10:00|2
2012-03-02 1:20:00|5
.
2012-03-02 2:00:00|3
用户可以选择开始时间,结束时间和时间间隔(10分钟,30,1小时,1天), ex如果用户选择开始时间
:2012-03-02 1:15:00,结束时间2012-03-02 2:10:00和间隔为10分钟,然后结果
Time | value.
2012-03-02 1:15:00|2
2012-03-02 1:25:00|5
.
2012-03-02 2:05:00|3
值是在时间间隔的最后一个数据,(例如数据15的值将是第10分钟的值)
我现在做的是我得到了整个数据集在该时间段不考虑(在我的程序中)根据用户选择的时间间隔获取结果, 时间间隔表示:10个薄荷糖,30个薄荷糖,1小时,1天
我的c#程序变得很慢,因为有很多迭代,他们的任何方式,我可以直接查询数据库,并立即获得数据,您的意见是高度赞赏
不是存储您的时间间隔为值,您可以通过存储的时间间隔为代表开始和结束的时间间隔,像这种两个DateTime
领域避免所有这些问题:
-
UserId
。 -
StartingInterval
:DateTime。 -
EndingInterval
:DateTime。
然后你就可以通过减去两个datetime
领域以及通过使用BETWEEN
两个领域陷入了设定的时间间隔的设定数据的获取时间间隔。
我不同意MGA的回答是有意义的,因为你没有存储间隔,你正在存储事件 - 并且每个事件与一次相关,而不是两次。
我不太明白你的查询的输入,因为如果用户给你一个开始时间和结束时间,间隔已经设置好了,不是吗?我想你只需要一个时间间隔(换句话说,你需要“2012 03 02 10:00:00”和“1小时”或“2012 03 02 10:00:00”和“2012” 03 02 10:10:00“)。
我们假设如果用户给你一个日期和时间间隔,你的程序可以将它转换为开始时间和结束时间,所以你的查询将得到两个输入参数:start_time和end_time。
这里是一个可行的查询(测试用命令行的临时变量):
SELECT value FROM mytable
WHERE `Time` >= @start_time
AND `Time` <= @end_time
ORDER by `Time` DESC
LIMIT 1;
你必须处理这种情况没有什么是你的程序返回的,当然,这种情况。