[Gvsig_desarrolladores] Re: campos date en postGIS

Cesar Escribano cescriba en gmail.com
Jue Abr 24 08:49:27 CEST 2008


Buenos días santiago.
No se si ya habrás resuelto tu problema con las fechas en PostGIS.
Yo te envío una especie de apaño qeu utilizo yo para escribir fechas en la
base de datos.
Como he estado trabajando simultáneamente con Oracle y con PostGIS, verás
que en cada caso trato la fecha de un modo algo distinto.


public void crearOperacion(int gid){
 Date fecha = null;
 SimpleDateFormat sdf = null;
 String DATE_FORMAT_ORACLE="dd-MM-yyyy HH:mm:ss";
 String DATE_FORMAT_POSTGIS="yyyy-MM-dd";
 String cadenaFecha=null;

 op.set_Gid(gid);
 //fecha=limpiaFecha(String.valueOf(op.get_Fecha()));
 if (pdb.getNombreDriver().equals("Oracle Spatial Database Driver")){
  if (sdf==null){
   sdf=new SimpleDateFormat(DATE_FORMAT_ORACLE);
  }
 }

 if (pdb.getNombreDriver().equals("PostGIS JDBC Driver")){
  if (sdf==null){
   sdf=new SimpleDateFormat(DATE_FORMAT_POSTGIS);
  }
 }
 if (fecha==null){
  fecha = new Date();
 }

 cadenaFecha=limpiaFecha(sdf.format(fecha));
 //JOptionPane.showMessageDialog(null,cadenaFecha);


 try {
  if(gps.getGestorBD().conectar2(pdb)==true){
   gps.getGestorBD().consultaINSERT("INSERT INTO "+tablaOP+" (id_operacion,
id_tipooperacion, id_estado, id_usuario, fecha, id_usuariovalida,
fecha_valida, gid) VALUES
("+op.getId_operacion()+","+op.getId_tipooperacion()+","+op.get_Estado()+","+op.getId_Usuario()+","+cadenaFecha+",null,null,"+op.get_Gid()+")");
   gps.getGestorBD().close();
....





public String limpiaFecha(String cadenafecha){
 String cadenaauxiliar="";
 String fecha="";

 //Nos quedamos con los primeros 10 caracteres

 cadenaauxiliar=cadenaauxiliar+cadenafecha.substring(0,10);

 //Si lo primero que aparece es el año, aplicamos un formato
 //Si lo primero que aparece es el día, aplicamos otro formato
 if(cadenaauxiliar.charAt(2)!='-'){
  fecha="to_date('"+cadenaauxiliar+"','YYYY-MM-DD')";
 }else{
  fecha="to_date('"+cadenaauxiliar+"','DD-MM-YYYY')";
 }//Fin del if
 return fecha;
}// fin de LimpiaFecha

No te pierda en gps.getGestorBD().conectar2(pdb... son objetos creados por
mi, propios de mi aplicación. Lo importante es el formato de las fechas y la
función limpiaFecha(). Esta función devuelve una "cadenaauxiliar" tipo
String que es la que escribo el correspondiente campo de la base de datos.
Escribir en la base de datos lo hago mediante
gps.getGestorBD().consultaINSERT("INSERT INTO "+tablaOP........

Un saludo.
Espero qeu te sirva o que alguien te haya ayudado de otra forma más
satisfactoria.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20080424/c426372e/attachment.htm


Más información sobre la lista de distribución gvSIG_desarrolladores