Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

267
Visualizações
¿Cómo puedo usar la función strftime con signo de interrogación en Java?

Estoy planeando agregar objetos 'Fecha' en la base de datos SQLite. Sin embargo, recibo un error acerca de que la inserción es nula. el error es este

 org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_NOTNULL] A NOT NULL constraint failed (NOT NULL constraint failed: dates.Tarih) at org.sqlite.core.DB.newSQLException(DB.java:909) at org.sqlite.core.DB.newSQLException(DB.java:921) at org.sqlite.core.DB.execute(DB.java:825) at org.sqlite.jdbc3.JDBC3PreparedStatement.execute(JDBC3PreparedStatement.java:53)

Este es mi código. Sospecho por los signos de interrogación. Porque cuando los elimino y los coloco con 'now' . De hecho, funciona. Pero, el siguiente código arroja el error anterior.

Método de inserción

 public static void insert(Date date, Date date2) { try{ System.out.println(" date:"+date.toString()); String query = "insert into dates(Tarih,Tarih2) values(strftime('%d-%m-%Y',?), strftime('%d-%m-%Y',?))"; pst=conn.prepareStatement(query); pst.setObject(1,date); pst.setObject(2,date2); pst.execute(); }catch (SQLException e){ e.printStackTrace(); } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Probablemente haya definido la columna Tarih como NOT NULL y su código está tratando de insertar un valor null en la tabla.

La razón por la que obtiene un null de strftime() es porque no pasa una fecha válida para SQLite.
Para SQLite, las fechas/horas de fecha válidas son cadenas en el formato yyyy-MM-dd hh:mm:ss , o tiempos de época enteros de Unix o números de coma flotante que representan días julianos.

Lo que pasa son objetos de fecha y este es su error.

Una forma de resolver el problema es extraer de cada uno de los objetos Date un número entero que represente la época de Unix y pasarlo a strftime() :

 public static void insert(Date date, Date date2) { try{ long d = date.toInstant().toEpochMilli() / 1000; long d2 = date2.toInstant().toEpochMilli() / 1000; String query = "insert into dates(Tarih,Tarih2) values(strftime('%d-%m-%Y', ?, 'unixepoch'), strftime('%d-%m-%Y', ?, 'unixepoch'))"; pst=conn.prepareStatement(query); pst.setLong(1, d); pst.setLong(2, d2); pst.execute(); } catch (SQLException e){ e.printStackTrace(); } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda