2012-07-10 13:02:16

    1. 时间控制技术

    为了更好的控制时段选择,我们对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

    1. 该语句得到如下结果,从结果可以得知,我们使用时间增量0.0416*7,就可以得到从00:0006:007小时的数据库记录。同时,我们只要输入起始时间和时间增量这2个参数,就可以动态的查询到指定时段的数据。相对于用传统的方法,此方法更容易在SQL语句和程序之间传递时间参数。