this issue was raised by timezone settings ...

On Wed, Feb 1, 2017 at 10:15 AM, Edmundo Robles <edmu...@sw-argos.com>
wrote:

> i just changed the  jdbc, but   still get the wrong values...
>
> On Wed, Feb 1, 2017 at 9:47 AM, Edmundo Robles <edmu...@sw-argos.com>
> wrote:
>
>> this issues could be  raised by a incorrect jdbc?   the jdbc used is
>> postrgresql-9.2-1002.jdbc4.jar and i have a postgresql 9.4
>>
>> On Wed, Feb 1, 2017 at 9:35 AM, Edmundo Robles <edmu...@sw-argos.com>
>> wrote:
>>
>>>
>>> I have postgresql 9.4  and  wrote a function get_ignition_time() to get
>>>   the first time when a  car was ignition on and  the  last time when
>>>  ignition is off,   those
>>> time stamps are  used in another function  get_fuel_consumption() to get
>>>  the  fuel consumption.
>>>
>>>
>>>
>>> The issue is  when:
>>> 1.   I run get_ignition_time()   directly in: psql, pgadmin  got the
>>> right values.
>>> 2.   I run  get_ignition_time()  inside iReport preview and  got the
>>> right values.
>>>
>>> 3. But, when i run  the report from web server got wrong values...first
>>> i thought on timezone issues, because i have had issues with timestamp
>>>  constraints at resotring database, but the timestamp  mismatch  the CST
>>> timezone, if you compare the time stamp  from  1 step  the  difference is
>>> not  6hr.
>>>
>>>
>>>
>>> the  get_igniton_time is called in a cursor  inside get_fuel_consumption
>>> but   when i fetch  it  the ini_time and end_time are wrong like   in 3rd
>>> step
>>>
>>>
>>>
>>> I was  rewrote the function many times,
>>>     i have used  window value first_value and last_value,
>>>     i have wrote  one  query  when igntion is on anohter whem igntion is
>>> off  then joined,
>>>     etc,
>>>    i have wrote  on different ways to get the same value like  step 1
>>> and 2 but  3 is always wrong...
>>>    i have set the order, like mentionend on 'windowedagg ... mail'
>>>    but no success ....
>>>
>>> what  is  the safe way to use  windowed  function???
>>>
>>>
>>>
>>>
>>>  this  is the  last function i wrote:
>>>
>>> CREATE OR REPLACE FUNCTION get_ignition_time(in punits character
>>> varying, pfrom character varying,  pto character varying)
>>>   RETURNS TABLE(id_unit integer
>>>   , ini_time timestamp with time zone
>>>   , end_time timestamp with time zone) as
>>> $BODY$
>>> DECLARE
>>>    vunits integer[]= string_to_array(punits, ',');
>>> BEGIN
>>> RETURN QUERY with   foo as (
>>> select   st.id_trun, st.time_stamp
>>> , min(st.time_stamp)  filter (where ignition=true)  over w
>>> , max(st.time_stamp)  filter (where ignition=false)  over w
>>> from big_big_table st
>>> where  st.id_trun =  ANY(ARRAY[vunits])
>>> and st.time_stamp>=pfrom::timestamptz and st.time_stamp <
>>> pto::timestamptz
>>> window  w as (partition by  st.id_trun )
>>> order by st.id_trun,st.time_stamp
>>> )
>>> select distinct  f.id_trun,f.min,f.max from foo f where min is not null
>>>  and max is not null;
>>>
>>> END;
>>> $BODY$
>>>   LANGUAGE plpgsql VOLATILE
>>>   COST 100
>>>   ROWS 1000;
>>>
>>>
>>>
>>>
>>>
>>> CREATE OR REPLACE FUNCTION get_fuel_cosumption_dt(IN truns character
>>> varying, IN dfrom character varying, IN dto character varying)
>>>   RETURNS TABLE(
>>> id_trun integer,
>>> first_day smallint,
>>> last_day smallint,
>>> consumtpion_over_day bigint,
>>> recharge_over_day bigint
>>> ) AS
>>> $BODY$
>>> DECLARE
>>>
>>>    rec record;
>>>    trip cursor for  select * from hydra.get_ignition_time(truns,
>>> dfrom,dto);
>>> BEGIN
>>>
>>>   create temp table if not exists t_fuel_consumption_dt(
>>>    id_trun integer,
>>> first_day smallint,
>>> last_day smallint,
>>> cosumption_over_day bigint,
>>> recharge_over_day bigint
>>> ) on commit drop;
>>>
>>>    open  trip;
>>>     loop fetch trip into rec;
>>>     exit when not found;
>>>
>>>           raise log 'XXX::>> select r.*  from
>>> hydra.rep_calculo_gas(''%'', ''%'', ''%'') r;' ,
>>> rec.id_trun::varchar,rec.ini_time::varchar,rec.end_time::varchar ;
>>>
>>>           insert into t_fuel_consumption_dt
>>>           select
>>>           r.*
>>>        from 
>>> hydra.get_consumption(rec.id_trun::varchar,rec.ini_time::varchar,rec.end_time::varchar)
>>> r;
>>>     end loop;
>>>    close trip;
>>>
>>>    return query select * from t_fuel_consumption_dt;
>>>
>>> END;
>>> $BODY$
>>>   LANGUAGE plpgsql VOLATILE
>>>   COST 100
>>>   ROWS 1000;
>>>
>>>
>>
>>
>> --
>>
>>
>
>
> --
>
>


--

Reply via email to