Como passar data via query pra mysql?

9 respostas
A

segunite galera… usando jdbc pra mysql tenho la minhas tabelas…

o problema é q eu nao to conseguindo passar pela query para um tipo Date ou Datetime

se vc tem la

“create table if not exists dbteste(“ID integer not null primary key”)” por exemplo no meu insert eu vou ter q passar ou um int ou um Integer.

mas e qndo eh uma tabela assim:

“create table if not exists dbteste(“data Date not null”)” por exemplo

se eu passo no insert como String da erro, como int tbm, da sqlexception “truncated data at row…”

qual o tipo q eu tenho q passar no insert para tipos mysql Date e Datetime?

Grato

9 Respostas

von.juliano

Utilize a função STR_TO_DATE.

Blz? Flw! :thumbup:

A

continua dando o msm erro =[

minha tabela:

"create table if not exists dbconsumos(" +
		"ID         integer  not null primary key," +
		"Data       date  ," +
		"Produto    double   not null," +
		"Quantidade integer  not null," +
		"Valor      double   not null)"

to setando a query assim:

sql.setQuery("insert into dbconsumos values("+code+","+
	"(SELECT STR_TO_DATE('2008/03/07', '%Y/%m/%d')),'"+
	 (String)jTable.getValueAt(jTable.getSelectedRow(),1)+
	  "',"+qtde+","+valor+")");

o resto testei separadamente funciona normal… soh o campo q eh Date q nao vai de jeito nenhum, da o msm erro “data truncated”

=[

sabe oq poderia ser?

von.juliano
Faça de uma forma mais "nobre":
String sql = "insert into dbconsumos values( ? , ? , ? , ? , ? )";

PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setInt(1, code);
stmt.setDate(2, new java.sql.Date(new java.util.Date().getTime()));
stmt.setDouble(3, jTable.getValueAt(jTable.getSelectedRow(),1));
stmt.setInt(4, qtde);
stmt.setDouble(5, valor);
Blz? Flw! :thumbup:
W

Ja tentou assim ??

sql.setQuery("insert into dbconsumos values("+code+","+  
     "'(SELECT STR_TO_DATE('2008/03/07', '%Y/%m/%d'))'" + ",'"+  
      (String)jTable.getValueAt(jTable.getSelectedRow(),1)+  
      "',"+qtde+","+valor+")");
Rafael_Silveira

E aê? Beleza?

Faça o seguinte, crie um objeto Date e utilize-o na criação de um objeto Timestamp. Passe o objeto Timestamp na query dentro de aspas simples. Exemplo:

Date myDate = new Date();
Timestamp ts = new Timestamp(myDate.getTimeInMillis());
String query = "insert into tableData values('" + ts + "')";

Até mais.

A

gero excecao

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: ‘1998’ for column ‘Data’ at row 1

acho q esse 1998 seria (2008-07-03) ‘-’ como operador numerico

seila oq faze, tentei ja de td jeito e nao vai cara

A

@wind

tentei, deu a msm coisa

@rafael

acusou aqui q getTimeInMillis() nao tem na Date

A

deu certo agora… mas nao entendi como, que gera excecao mas ele adiciona do msm jeito no banco

euoahe

vlw galera

Rafael_Silveira

Você está correto!

getTimeInMillis() é um método da classe Calendar. Você pode utilizá-la no lugar da classe Date nesse exemplo. Mas se não me engano, se você utilizar o método getTime() da classe Date conseguirá o mesmo efeito.

Atenciosamente;

Criado 7 de março de 2008
Ultima resposta 7 de mar. de 2008
Respostas 9
Participantes 4