今天在时间戳中获取日期

时间:2016-08-23 18:49:48

标签: java postgresql

我在postgreSQL中有一个函数,它根据参数返回0或1,我有一个访问这个功能的方法但是当我运行时我得到错误,我在设置时间戳的当前日期时遇到问题。我尝试使用simpleDataFormat添加模式,还有很多其他的东西,但我无法做到。提前谢谢!

 ERROR: function inserir_posicao(numeric, bigint, double precision, double precision, numeric) does not exist
  Dica: No function matches the given name and argument types. You might need to add explicit type casts.

db中的功能:

CREATE OR REPLACE FUNCTION public.inserir_posicao(
    _tag bigint,
    _data_hora timestamp without time zone,
    _lat double precision,
    _long double precision,
    _gado_id bigint)
  RETURNS integer AS
$BODY$declare
  tagPesq BigInt;
begin

  select tag into tagPesq from coordenadas where tag = $1;
  if tagPesq is not null and tagPesq > 0 then
     update coordenadas set pos_data = $2, 
    pos_latitude = $3,
    pos_longitude = $4,
    gado_id = $5
    where tag_id = $1;
  else
     insert into coordenadas(pos_data,pos_latitude,pos_longitude,
    tag_id, gado_id) values ($2,$3,$4,$1,$5);
  end if;

  return 1;

  EXCEPTION WHEN RAISE_EXCEPTION THEN
  BEGIN
    return 0;
  END;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.inserir_posicao(bigint, timestamp without time zone, double precision, double precision, bigint)
  OWNER TO postgres;

方法:

public int inserirPosicao(BigInteger tagId, BigInteger gadoId, double lat, double lon) {
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());  


        Query qry = manager.createNativeQuery("select inserir_posicao(:tag,:data,:lat,:lng,:gado)");
        qry.setParameter("tag", tagId);
        qry.setParameter("data", timestamp.getTime());
        qry.setParameter("lat", lat);
        qry.setParameter("lng", lon);
        qry.setParameter("gado", gadoId);
        return (int) qry.getSingleResult();
    }

0 个答案:

没有答案