2011-05-20 15 views
39

¿Cuál es la forma más sencilla de convertir un objeto java.sql.Date a java.util.Date conservando la marca de tiempo?Conversión de java.sql.Date a java.util.Date

me trataron:

java.util.Date newDate = new Date(result.getDate("VALUEDATE").getTime()); 

sin suerte. Todavía solo está almacenando la porción de fecha en la variable.

+0

Esta herencia es un legado diseño extraño – seand

Respuesta

47

La clase java.sql.Date está diseñada para llevar solo una fecha sin tiempo, por lo que el resultado de conversión que ve es correcto para este tipo. Debe usar java.sql.Timestamp para obtener una fecha completa con el tiempo.

java.util.Date newDate = result.getTimestamp("VALUEDATE"); 
+2

Voy a intentar esto, entonces: (. Result.getTimestamp ("ValueDate") getTime()) nueva fecha; – mservidio

+0

esto debería funcionar, pero dado que 'java.sql.Timestamp' también deriva de' java.util.Date' también podría usar la instancia Timestamp. – x4u

+0

Eso lo hizo. ¡Gracias! – mservidio

5

Desde java.sql.Date extiende java.util.Date, usted debe ser capaz de hacer

java.util.Date newDate = result.getDate("VALUEDATE"); 
+0

Sí, pero en tiempo de ejecución, 'newDate' seguirá siendo una instancia de' java.sql.Date' –

3

De la lectura del código fuente, si un java.sql.Date tiene realmente la información de tiempo, llamando getTime() devolverá un valor que incluye el tiempo información.

Si eso no funciona, la información no está en el objeto java.sql.Date. Espero que los controladores JDBC o la base de datos estén (en efecto) poniendo a cero el componente de tiempo ... o la información no estaba allí en primer lugar.

Creo que deberías estar usando java.sql.Timestamp y los métodos de conjunto de resultados correspondientes, y el tipo de SQL correspondiente.

+0

Estoy realizando consultas en Oracle 10g. Usando ojdbc14.jar – mservidio

3

Si realmente desea que el tipo de tiempo de ejecución para ser util.Date luego simplemente hacer esto:

java.util.Date utilDate = new java.util.Date (sqlDate.getTime());

Brian.

5

Esta función devolverá una fecha java convertida del objeto de fecha SQL.

public static java.util.Date convertFromSQLDateToJAVADate(
      java.sql.Date sqlDate) { 
     java.util.Date javaDate = null; 
     if (sqlDate != null) { 
      javaDate = new Date(sqlDate.getTime()); 
     } 
     return javaDate; 
    } 
Cuestiones relacionadas