elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  obtener la fecha actual java.sql.Date
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener la fecha actual java.sql.Date  (Leído 373 veces)
Yager2222

Desconectado Desconectado

Mensajes: 5


Ver Perfil
obtener la fecha actual java.sql.Date
« en: 23 Mayo 2020, 00:44 »

Tengo que obtener la fecha actual en formato java.sql.Date. para pasar el dato a una tabla en MySQL, Pero estoy completamente perdido:

¿Cómo se inserta la fecha en MySQL desde java?

Código:
private Date fecha;


¿Cómo se definiría la "fecha" dentro del siguiente constructor para sacar su valor?

Código:
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                    Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
};
                    gventas.registrarVenta(v);


Muchas gracias

Saludos


En línea

rub'n


Conectado Conectado

Mensajes: 1.038


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: obtener la fecha actual java.sql.Date
« Respuesta #1 en: 2 Junio 2020, 14:31 »

Tengo que obtener la fecha actual en formato java.sql.Date. para pasar el dato a una tabla en MySQL, Pero estoy completamente perdido:

¿Cómo se inserta la fecha en MySQL desde java?

Código:
private Date fecha;


¿Cómo se definiría la "fecha" dentro del siguiente constructor para sacar su valor?

Código:
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                     Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
};
                     gventas.registrarVenta(v);


Muchas gracias

Saludos

Hola,

Para la fecha actual usa java.util.Date().getTime(), son diferentes paquetes, pero mismo nombre de clase, el constructor de la fecha con sql recibe un long como parámetro, que lo obtenemos de getTime()


Código
  1. new java.util.Date().getTime()

por lo tanto quedaría

Código
  1. java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());
  2. System.out.println(date.toString());

Output:

Código
  1. 2020-06-02
  2.  
  3. Process finished with exit code 0

También con

Código
  1. System.out.println(java.sql.Date.valueOf(LocalDate.now()));

Código
  1. 2020-06-02
  2.  
  3. Process finished with exit code 0
  4.  
Ahora para hacer un insert desde java con MySQL, debes conectarte a la db, construir la query, usar PreparedStatement que es la sentencia precompilada y segura.


« Última modificación: 3 Junio 2020, 10:28 por rub'n » En línea

KNOWLEDGE  SHOULD BE FREE!!! blog.make();
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen King.
TickTack

Desconectado Desconectado

Mensajes: 253


Ver Perfil
Re: obtener la fecha actual java.sql.Date
« Respuesta #2 en: Ayer a las 17:59 »

Hola Yager2222,

no sé si todavía lo necesitas, pero de todos modos.
Use el paquete Calender primero para obtener la instancia y luego la hora.
Código:
java.util.Calendar

Y luego usalo en el constructor.
Código:
java.sql.Date

Esto debería verse como...
Código:
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());

Entonces el código final puede verse como asi:
Código:
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                       Integer.parseInt(request.getParameter("idLibro")), new java.sql.Date(Calendar.getInstance().getTime().getTime()) ) {
                       };
                       gventa.registrarVenta(v);

Citar
¿Cómo se inserta la fecha en MySQL desde java?
La siguiente es otra manera:
Inserta fechas, o más bien datos en Java a una base de datos usando PreparedStatement. El tutorial de oracle "oficial" sobre cómo lograr tal cosa se puede encontrar aquí:
https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Un ejemplo sobre cómo insertar una fecha usando PreparedStatement:
Código:
final java.sql.Date fechaSQL = new java.sql.Date();
final java.sql.Timestamp horaSQL = new java.sql.Timestamp();

final PreparedStatement declaracionPreparada = connection.prepareStatement("insert into tblDates (date,time) values(?,?)");
declaracionPreparada.setDate(1,fechaSQL);
declaracionPreparada.setTimestamp(2,horaSQL);
declaracionPreparada.executeUpdate();

declaracionPreparada.close();
connection.close();
Tene en cuenta que el método executeUpdate() en una instancia de PreparedStatement devuelve un valor Integer que indica cuántas filas se vieron afectadas por la instrucción o devuelve el valor 0 para las instrucciones SQL que no devuelven nada. Puede ser conveniente utilizar ese valor para, por ejemplo, manejo de errores o registro simple solo por nombrar un par de ejemplos.
En términos ideales, vos utilizarías una declaración de bloque de recursos de prueba además del manejo adecuado del error para garantizar la eliminación y el registro adecuados de los recursos, incluso en el caso de excepciones:
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

Ejemplo:
Código:
public final void viewTable(final Connection con) throws SQLException {

   final String query = "SELECT COF_NAME, SUP_ID, PRICE, SALES, TOTAL FROM COFFEES";

   try (final Statement stmt = con.createStatement()) {
       final ResultSet rs = stmt.executeQuery(query);

       while (rs.next()) {
           final String coffeeName = rs.getString("COF_NAME");
           final int supplierID = rs.getInt("SUP_ID");
           final float price = rs.getFloat("PRICE");
           final int sales = rs.getInt("SALES");
           final int total = rs.getInt("TOTAL");

           logger.info(coffeeName + ", " + supplierID + ", " +
                              price + ", " + sales + ", " + total);
       }
   } catch (final SQLException e) {
       logger._error_(e);
   }
}
Este fragmento de código se toma de los documentos de Oracle enumerados aquí (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html), pero ligeramente modificado para incluir una interfaz de registro SLF4J (http://www.slf4j.org/).

Citar
¿Cómo se definiría la "fecha" dentro del siguiente constructor para sacar su valor?

Código:
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                     Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
};
                     gventas.registrarVenta(v);
No estoy seguro de lo que estás pidiendo con respecto a tu segunda pregunta. ¿Podrías dar más detalles? Estoy pensando que simplemente lo definirías como el objeto Date que es. También puede convertir java.sql.Date y java.util.Date utilizando sus respectivos métodos y constructores. Por ejemplo, para convertir un java.util.Date en un java.sql.Date:
Código:
new java.sql.Date(utilDate.getTime());

Sin embargo, para el desarrollo de aplicaciones modernas, se recomienda que utilices una instancia de objeto Calendar en su lugar:
https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

O incluso mejor (realmente preferido), Joda-Time (https://www.joda.org/joda-time/) (java.time).

Además, si fuera tu, dejaría que Hibernate (http://hibernate.org/) u otras implementaciones de JPA (https://es.m.wikipedia.org/wiki/Java_Persistence_API) manejen la parte SQL de tu aplicación si estás trabajando con entidades/objetos específicos y mapeo de datos. La inclusión del Framework Spring hará que tu vida sea mucho más fácil (sin mencionar que hará que te contraten de manera mucho más interesante si podes trabajar en dicho marco):
https://spring.io/
https://spring.io/projects/spring-data-jpa


Saludos
« Última modificación: Ayer a las 22:21 por TickTack » En línea

rub'n


Conectado Conectado

Mensajes: 1.038


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: obtener la fecha actual java.sql.Date
« Respuesta #3 en: Ayer a las 19:46 »

doc la api Calendar es vieja, lo nuevo es la api java.time nativa desde la jdk 8 sin apis de terceros como joda time, pero igual yo tambien llegue a usar Joda Time.
« Última modificación: Ayer a las 23:35 por rub'n » En línea

KNOWLEDGE  SHOULD BE FREE!!! blog.make();
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen King.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines