Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Obtener hora y fecha desde Base de datos

Estas en el tema de Obtener hora y fecha desde Base de datos en el foro de Java en Foros del Web. Hola a todos, recurro nuevamente a ustedes ya que tengo un problema bastante frustrante, resulta que tengo en una base de datos un campo de ...
  #1 (permalink)  
Antiguo 30/03/2015, 09:15
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Obtener hora y fecha desde Base de datos

Hola a todos, recurro nuevamente a ustedes ya que tengo un problema bastante frustrante, resulta que tengo en una base de datos un campo de tipo "Datetime" y bueno, estoy intentando tomar el valor de varias filas y almacenarlas en una lista. he intentado con los metodos obsoletos como el "gethour", "getsecond" etc y me lanza error "null", luego intente con SimpleDateFormat utilizando el siguiente codigo.

Código Java:
Ver original
  1. DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

La fecha me la devuelve correctamente, pero las horas, minutos y segundos me los devuelve como 00:00:00

Espero que puedan ayudarme, lo único que se me ocurre es que no se este almacenando en el ResultSet la fecha+hora, pero mucho menos sabría arreglar eso hahaha, bueno espero que puedan ayudarme de antemano muchas gracias.

Les dejo una imagen de el valor en la base de datos y del resultado que obtengo.


ahh y el codigo del metodo con la query.
Código Java:
Ver original
  1. public static Transaction buscarMetricasLentas(int fechaInicio, int fechaFin, int tranID){
  2.         int contador = 0;
  3.         Transaction transaccion = null;
  4.         DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
  5.         Connection conexion = Conexion.getConexion();
  6.         try {
  7.         String query = "Use SyntheticMonitoring "
  8.                 + "SELECT TransactionID, StartTimeUTC, StartTime, TotalGood, TotalBad, TotalUnavailable "
  9.                 + "FROM TransactionDetails "
  10.                 + "WHERE StartTimeUTC >= ? and StartTimeUTC <=? and TransactionID = ? "
  11.                 + "and not LocationID = 44 and TotalBad = 1";
  12.        PreparedStatement buscar = conexion.prepareStatement(query);
  13.        buscar.setInt(1, fechaInicio);
  14.        buscar.setInt(2, fechaFin);
  15.        buscar.setInt(3, tranID);
  16.        ResultSet rs = buscar.executeQuery();
  17.        while(rs.next()){
  18.            contador = contador+1;
  19.            transaccion = new Transaction(rs.getInt("TransactionID"), rs.getInt("StartTimeUTC"),
  20.            rs.getDate("StartTime"), rs.getInt("TotalGood"), rs.getInt("TotalGood"), rs.getInt("TotalUnavailable"));
  21.            System.out.println(dateFormat.format(transaccion.getStartTime()));
  22.            System.out.println();
  23.        }
  24.        System.out.println("Numero de filas: "+contador);
  25.        buscar.close();
  26.        conexion.close();
  27.        
  28.         } catch (Exception e) {
  29.             System.err.println("Error :( ");
  30.             System.err.println(e.getMessage());
  31.         }
  32.         return transaccion;
  33.        
  34.     }
  35.    
  36.         public static void main (String[] args) {
  37.         try {
  38.            
  39.             buscarMetricasLentas(1407699422, 1407706023, 226);
  40.            
  41.         } catch (Exception e) {
  42.             System.err.println("Error :( ");
  43.             System.err.println(e.getMessage());
  44.         }
  45.     }
  #2 (permalink)  
Antiguo 30/03/2015, 10:19
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener hora y fecha desde Base de datos

Hola...

¿Ya verificaste que de verdad tengas guardado el tiempo en tu base de datos? Después de todo si en tu base de datos tienes la fecha bien pero el tiempo esta como 00:00:00, entonces, es correcto lo que te devuelve el SimpleDateFormat...
  #3 (permalink)  
Antiguo 30/03/2015, 10:41
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener hora y fecha desde Base de datos

Cita:
Iniciado por Lawliet18 Ver Mensaje
Hola...

¿Ya verificaste que de verdad tengas guardado el tiempo en tu base de datos? Después de todo si en tu base de datos tienes la fecha bien pero el tiempo esta como 00:00:00, entonces, es correcto lo que te devuelve el SimpleDateFormat...
Hola Lawliet

Si, la base de datos esta perfecta, como dije anteriormente, creo que el problema es o el Simpledateformat o que la hora no se almacena en la variable de tipo date.

De todas maneras habia puesto esta foto xd donde muestra la hora de una de las filas de mi base de datos, y la que me lanza netbeans.
  #4 (permalink)  
Antiguo 30/03/2015, 10:43
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener hora y fecha desde Base de datos

Hola...

Porque no intentas primero esto.

IMPORTANTE: Te recomiendo que si vas a pasar parámetros del tipo fecha entonces los pases con el formato correcto; es decir, "00-00-00 00:00:00" ya que a mi punto de vista solo haces mas complicada la interpretación en la consulta, es como si plantaras un árbol de manzanas, obviamente esperas una manzana de ese árbol y no cualquier otro fruto, una manzana es una manzana, un Date es un Date. Ahora, si respetamos tu idea de pasar un entero como Date, entonces tendríamos que aplicarle el SimpleDateFormat a este entero para que vea que efectivamente esta recibiendo una fecha.

1.- Primero recupera los valores del ResultSet sin crear el Objeto, ni aplicar el SimpleDateFormat.
2.- En vez de crear un Objeto por cada resultado, no sería mas conveniente que hagas una Lista del Objeto Transaction (List<Transaction> list = new ArrayList<Transction>()) el cual le pasas como resultado el transaccion que tienes el return.
3.- Cuando vallas a Iterar la lista para mostrar los resultados de la lista, es ahí donde aplicarías el SimpleDateFormat

Última edición por Lawliet18; 30/03/2015 a las 11:01
  #5 (permalink)  
Antiguo 30/03/2015, 11:03
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener hora y fecha desde Base de datos

Gracias por tu respuesta Lawliet.

Bueno, intente sacar el valor del resultset sin almacenarlos en objetos, lo que hice fue crear una variable de tipo date lo cual quedó así:

Código Java:
Ver original
  1. Date fecha = rs.getDate("StartTime");
  2. System.out.println("Fecha: "+dateFormat.format(fecha));

pero el resultado fue el mismo.
Fecha: 10-08-2014 00:00:00

También intente lo siguiente.
Código Java:
Ver original
  1. String fecha = dateFormat.format(rs.getDate("StartTime"));
Pero tampoco funcionó :c

Última edición por oshho; 30/03/2015 a las 11:09
  #6 (permalink)  
Antiguo 30/03/2015, 11:11
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener hora y fecha desde Base de datos

Sin aplicar el SimpleDateFormat que te devuelve la consulta; es decir, una simple impresión de pantalla... System.out.println(rs.getDate("StartTime"));
  #7 (permalink)  
Antiguo 30/03/2015, 11:27
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener hora y fecha desde Base de datos

Cita:
Iniciado por Lawliet18 Ver Mensaje
Sin aplicar el SimpleDateFormat que te devuelve la consulta; es decir, una simple impresión de pantalla... System.out.println(rs.getDate("StartTime"));
El System.out.println(rs.getDate("StartTime")); me lanza el siguiente resultado:
2014-08-10 16:57:18.547

Y si lo almaceno en el objeto el cual sería System.out.println(transaccion.getStartTime());
me arroja lo siguiente:
2014-08-10

Como dije anteriormente al parecer el problema radica en que no se almacena la fecha y la hora en la variable, al parecer solo se almacena la fecha.

Última edición por oshho; 30/03/2015 a las 11:46
  #8 (permalink)  
Antiguo 30/03/2015, 12:16
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener hora y fecha desde Base de datos

Bueno, por lo menos ya tenemos el tiempo... Cambiaremos un poco tu método

1.- Declararemos una lista de objetos del tipo Transaction. La vamos a declarar global para que podamos acceder a ella mas rápido.

2.- En vez de un simple método que devuelva un Objeto Transaction, vamos a hacer que retorne una lista de ese tipo; es decir, la lista que declaramos al principio, previamente llenada con datos mediante el while.

3.- Recorre la lista para ver el resultado.

Si tienes dudas, aquí estamos para ayudarte.
  #9 (permalink)  
Antiguo 31/03/2015, 02:53
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Obtener hora y fecha desde Base de datos

Buenas,

Todo apunta a que el problema es que estas utilizando un java.sql.Date en lugar de un java.util.Date.

java.sql.Date ignora las horas minutos y segundos:
http://stackoverflow.com/questions/2...-java-sql-date


En Transaction declara el campo startTime como java.util.Date.

Para asignarlo/convertirlo en el constructor tendras que pasarle un rs.getTimestamp("StartTime") en lugar de rs.getDate.....


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #10 (permalink)  
Antiguo 01/04/2015, 06:04
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener hora y fecha desde Base de datos

Cita:
Iniciado por Profesor_Falken Ver Mensaje
En Transaction declara el campo startTime como java.util.Date.

Para asignarlo/convertirlo en el constructor tendras que pasarle un rs.getTimestamp("StartTime") en lugar de rs.getDate.....


Un saludo
Muchisimas gracias por la respuesta, esto me funcionó muy bien, salvo que me daba hasta los milisegundos, pero eso lo solucioné utilizando el SimpleDateFormat, lamento no haber podido responder antes, muchisimas gracias por tu ayuda Profesor Falken, y también a Lawliet.

Etiquetas: fecha, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:20.