表mile_sum
主键(自增列) 车号 里程数 日期
ms_id(integer) vehicle_id(integer) miles(double) indexId(integer) totalmiles server_time(datetime)
1 71506 99.920 null null 2007-6-6 4:50:45
2 71506 69.070 null null 2007-6-6 8:59:26
3 71506 120.457 null null 2007-6-8 12:56:12
4 100026 100.250 null null 2009-3-2 8:20:12
5 100026 150.245 null null 2009-3-3 12:20:12
6 100026 190.547 null null 2009-3-3 15:05:20
7 100026 250.475 null null 2009-3-4 9:15:6
8 100026 451:524 null null 2009-3-5 14:12:20问题:页面上面有两个框,可以选择日期(javascript写的,点击后有日历),一个是起始日期,一个是终止日期。
求这两个日期之间的的里程数。切记:数据库为mysql。
sql语句若正确,立马给分。
主键(自增列) 车号 里程数 日期
ms_id(integer) vehicle_id(integer) miles(double) indexId(integer) totalmiles server_time(datetime)
1 71506 99.920 null null 2007-6-6 4:50:45
2 71506 69.070 null null 2007-6-6 8:59:26
3 71506 120.457 null null 2007-6-8 12:56:12
4 100026 100.250 null null 2009-3-2 8:20:12
5 100026 150.245 null null 2009-3-3 12:20:12
6 100026 190.547 null null 2009-3-3 15:05:20
7 100026 250.475 null null 2009-3-4 9:15:6
8 100026 451:524 null null 2009-3-5 14:12:20问题:页面上面有两个框,可以选择日期(javascript写的,点击后有日历),一个是起始日期,一个是终止日期。
求这两个日期之间的的里程数。切记:数据库为mysql。
sql语句若正确,立马给分。
select
vehicle_id,
sum(miles) as miles
from
mile_sum
where
server_time>起始日期 and server_time<终止日期
group by vehicle_id
vehicle_id,
max(miles)-min(miles) as miles
from
mile_sum
where
server_time>起始日期 and server_time<终止日期
group by vehicle_id其实还是没有完全理解你的需求,表的字段代表什么意思也应该说明一下
在有相同日期情况下,怎么取数。
select
date(server_time),vehicle_id,max(miles)-min(miles)
from
miles_sum
where
DATE(server_time)>='2009-3-20' and
DATE(server_time)<='2009-3-22' and
vehicle_id in(100026,1000027)
group by
vehicle_id,date(server_time)感谢大家...
结果不对有可能是时间精度的问题,也就是如果时间包含有小时的,就没有包含3月4日那天的
改一下:select
vehicle_id,
max(miles)-min(miles) as miles
from
mile_sum
where
DATE_FORMAT(server_time,GET_FORMAT(DATE,'ISO'))>=起始日期 and DATE_FORMAT(server_time,GET_FORMAT(DATE,'ISO'))<=终止日期
group by vehicle_id--说明:起始日期和终止日期的格式为'2009-03-31'这种格式,以上用between and 也可以
试试这样结果是否正确?