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; >>> >>> >> >> >> -- >> >> > > > -- > > --