¿Un equivalente de fecha y hora en java.sql?(¿hay un java.sql.datetime?)
mysql jdbc (4)
El equivalente de MS SQL Server o el tipo de datos DATETIME de MySQL o el tipo de datos Oracle DATE es java.sql.Timestamp.
Hasta ahora, no he encontrado una respuesta clara a esto.
Me gustaría saber cuál es el equivalente para un tipo SQL DATETIME y el tipo java, utilizando un PreparedStatement.
He encontrado: http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm
Pero indica que el tipo de SQL "DATETIME" es el mismo que sql.date, pero al mirar los documentos de fecha SQL ( http://download.oracle.com/javase/7/docs/api/java/sql/Date.html ), dice que el tiempo está truncado (todos ceros).
Lo que quiero es poder especificar un preparedStatement.setDateTime()
o algún tipo.
La única otra forma que veo es usando una marca de tiempo, pero eso requeriría que cambie el tipo de columna, mientras que no puedo imaginar que alguien más nunca haya tenido este problema antes.
¿Algún consejo?
Editar: Estoy usando MYSQL.
El paquete java.sql tiene tres tipos de fecha / hora:
-
java.sql.Date
- Una fecha solamente (sin parte de tiempo) -
java.sql.Time
- Solo un tiempo (sin parte de fecha) -
java.sql.Timestamp
- Fecha y hora
Desea la última: java.sql.Timestamp
.
Si usa estos tipos, no necesita llamar a un colocador específico; Solo usa:
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a java.sql type:
preparedStatement.setObject(param);
En Java tenemos java.util.Date para manejar los valores de Fecha y Hora.
En SQL, normalmente tiene fechas (solo fechas), hora (solo hora) y fecha / hora (fecha y hora).
En su programa Java, por lo general, siempre tendrá java.util.Date, por lo que cada vez que configure Fechas / Horarios / Fecha y hora en PreparedStatements, siempre elija exactamente cuál necesita, de acuerdo con la base de datos.
Tuve un problema similar con mi Mysql con fecha de SQL y localmente en mi aplicación solo tuve Fecha
Lo solucioné así
java.sql.Date dataStartSql = new java.sql.Date(start.getTime());
Después de eso usé el setDate normalmente, y utilicé getTimestamp para recuperar el primer valor.
donde start es un objeto Date.