Salvando data incorreta no MySQL + Primefaces

13 respostas
J

A data está sendo salva de forma incorreta, por exemplo, no meu inputMask eu digito 04/03/1980, mas na hora de exibir a data que foi salva, ele exibe 03/03/1980
Não é só na exibição, na verdade, olhando no banco mesmo, a data foi salva incorretamente.

Alguém já teve um problema semelhante? Como resolver?

Meu inputMask:

<p:inputMask value="#{eleitor.nascimento}" mask="99/99/9999" />

No Bean Eleitor, o atributo é nascimento, do tipo java.util.Date, com seus getter e setter normais.

O DAO:

...
ps.setDate(3, new java.sql.Date(eleitor.getNascimento().getTime()));
...

É salvo, porém incorretamente. Como corrigir isso?
Desde já, agradeço qualquer ajuda!

13 Respostas

A

Cara tenta trocar seu p:inputMask pelo p:calendar… já tentei algo assim e tive esse mesmo problema, hoje eu só uso o p:calendar

J

O problema é que eu vou perder a máscara para a data, não?

Além disso, creio que o p:calendar é útil para datas atuais, não para datas mais antigas, tipo a data de nascimento dos usuários. Correto?

J

Fiz mais testes, e o que acontece é que ele sempre salva um dia a menos do que foi digitado.
EX: DIGITADO 03/05/1980
Ele salva: 02/05/1980

Alguém já teve um erro semelhante? E como se resolve isso?

Obrigado.

E

Ja passei por isso.
Da somente coloquei o locale=“pt_BR” e pattern=“dd/MM/yyyy”

<p:calendar id="data" value="#{ }"
						locale="pt_BR" pattern="dd/MM/yyyy" />
J

Mudei locale para pt_BR e o problema persiste…

Alguma sugestão amigos?

E

Como eu uso o inputMask

<p:inputMask id="date" value="#{}"
	mask="99/99/9999"
	validatorMessage="Data com formato inválido!"
	converterMessage="Data com formato inválido!"
	size="10">
	<f:convertDateTime pattern="dd/MM/yyyy"
							timeZone="America/Sao_Paulo" />
</p:inputMask>
J

Edson, o value="#{}" não é atribuído a nenhum bean?

A

javadalberto, o value vai ser seu #{eleitor.nascimento}

E

o value e o seu #{eleitor.nascimento}, conforme andii.brunetta

F

eu segui isso mais na hora de salvar no meu banco da erro no formato,

sera que pq eu coloco minha data como string na minha classe…

estou usando o p calendar

tenho que converte para tipo date ou eu mudo para tipo date em vez de string que da certo…

valewww

obj_sql.setString(5, obj_clientes.getDataalteracao());

<h:outputLabel for ="dataalteracao" value = "Data Alteração:*"/> <p:calendar id="dataalteracao" value="#{clientesBean.clientes.dataalteracao}" required="true" locale="pt_BR" pattern="dd/MM/yyyy" title="Campo obrigatório. Informe a data de alteração " label="Data de Alteração"> <p:tooltip for="dataalteracao" showEvent="focus" hideEvent="blur"/> </p:calendar>

E

Boa noite.

Você pode usar assim na sua classe.

@Temporal(TemporalType.DATE)
@Column(name = "data_alteracao")
private Date dataAlteracao;

Com isso trabalha somente com date.

F

amigo nem sei onde coloco isso...

o problema tah sendo quando vou passar a data a ser gravada no banco ou alterada...
tipo na minnha classe eu coloco a variavel como date

private Date dataalteracao;

	public  Date getDataalteracao() {
		return dataalteracao;
	}

	public void setDataalteracao(java.sql.Date date) {
		this.dataalteracao = dataalteracao;
	}
ai quando vou passar pro banco gravar:
String comando_sql = "insert into tbl_clientes (dataalteracao) values (?)";

obj_sql.setDate(1, obj_clientes.getDataalteracao());//oproblema é nesse set date
F

consegui era uns importa errados…
mais ainda não salva no banco…
o botão não funciona.
hauhauah

Criado 9 de março de 2012
Ultima resposta 29 de nov. de 2012
Respostas 13
Participantes 4