2012-07-10 13:02:16
- 时间控制技术
为了更好的控制时段选择,我们对SQL语句的时段参数做一定的测试,测试结果如下:
对于Oracle数据库表中的时间参数,我们建立了相应的字段,是start_time。该参数是形如’yyyy-mm-dd hh24:mi:ss’的字符串,例如’2012-05-08 00:00:00’。Oracle对于该参数有灵活的变化,可以灵活使用。
例如:对时间参数加1,得到以下结果
select distinct(a.start_time),a.start_time+1 from wp_mscserver_net a
where start_time=to_date(‘2012-05-08 02:00:00’,’yyyy-mm-dd hh24:mi:ss’)
此SQL语句得到”2012-5-8 2:00:00”和”2012-5-9 2:00:00”的结果,说明时间参数加上增量1,得到第二天(24小时后)的时间信息。如果将时间参数的增量修改为0.5,则得到”2012-5-8 2:00:00”和”2012-5-8 14:00:00”的结果,相差12小时,即得到12小时后的时间信息。
依此类推,将时间参数的增量变为1/24(即0.04167),则得到”2012-5-8 2:00:00”和”2012-5-8 3:00:00”的结果,刚好相差1小时。
如果我们将时间增量设置为比1/24略小的数值(例如0.0416),则得到”2012-5-8 2:00:00”和”2012-5-8 2:59:54”的结果,相差1小时以内。
如果将0.0416作为基准增量,则其倍数可以作为时段控制的良好方法。例如,如果将增量变为0.0416*5,则系统返回”2012-5-8 2:00:00”和”2012-5-8 6:59:31”的结果,相差5小时。
这说明,我们可以灵活运用时间参数的增量,来灵活的控制时段的间隔大小。
2. 时间增量的应用
在以下语句中,我们灵活运用时间增量,来得到特定的时段的数据库记录:
select a.start_time,b.china_name,b.vendor_name,
sum(a.F0282)
from wp_mscserver_net a ,wcdma.ne_mscserver b
where start_time>=to_date(‘2012-05-08 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)
and start_time<=to_date(‘2012-05-08 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)+0.0416*7
and a.ne_id =b.ne_id and b.active_status=1 and a.subcounter1<>’sum’
group by a.start_time ,b.china_name,b.vendor_name
order by a.start_time ,b.china_name
该语句得到如下结果,从结果可以得知,我们使用时间增量0.0416*7,就可以得到从00:00到06:00共7小时的数据库记录。同时,我们只要输入起始时间和时间增量这2个参数,就可以动态的查询到指定时段的数据。相对于用传统的方法,此方法更容易在SQL语句和程序之间传递时间参数。