GARANTIR DESCONTO

Fórum Tipos de Dados para Datas, Horas e Minutos #568827

28/02/2012

0

Boa tarde, pessoal. Estou com as seguintes dúvidas: 1) Qual o melhor tipo de dados para armazenar os seguintes conteúdos levando-se en conta os cenários abaixo: (a) A data em que um ator executou alguma operação: Date, Calendar ou GregorianCalendar ?; (b) O horário inicial e o horário final de uma operação: Time, String, int, GregorianCalendar ? (c) Baseado na definição de (b), qual o tipo para armazenar a diferença entre horario_final e horario_inicial (hh:mm) ? - dois atributos distintos -> um para horas e outro para minutos ? - um único atributo -> armazenando horas e minutos ? E que tipo utilizar: int, String, Calendar, Date, GregorianCalendar, Timestamp ? 2) De posse dessas definições, para armazenar essas informações em um BD (PostgreSQL), qual a correspondência dos atributos em Java para os campos de uma tabela no BD PostgreSQL? Exemplo: Java PostgreSQL ======================== String Varchar, Text int integer double Numeric, Decimal, Real float Numeric, Decimal, Real Date Date, Timestamp Calendar ??? Timestamp Timestamp boolean boolean Agradecendo qualquer ajuda, Augusto Cesar
Augusto Nunes

Augusto Nunes

Responder

Posts

28/02/2012

Douglas Eric

Use um Calendar
Calendar c = Calendar.getInstance(); //retorna GregorianCalendar ou outro definido pelo Locale
use os métodos [b]set[/b] para colocar os valores, retorne a data com getTime() depois que a data do calendar estiver setada
Date data = c.getTime();
No postgre, use DATE se quiser apenas dia/mês/ano ou TIMESTAMP se quiser a data e hora. Para salvar no banco, use a própria String gerada, o postgres reconhece o formato
String date = data.toString();
Salve a String date no banco. OU use um PreparedStatement e use o método setDate()
Responder

Gostei + 0

02/03/2012

Augusto Nunes

Olá, Sekkuar, acho que não expliquei bem a minha primeira dúvida, mas vamos lá tentar esclarecer: - Imaginando que eu tenha uma tabela no Banco de Dados chamada tblAnotacao, cujos campos seriam: matricula serial primary key not null nome varchar(30) not null dtNasc date horaInicial timestamp horaFinal timestamp valorPago numeric(10,2) obs text Na definição de uma classe em Java, quais os tipos correspondentes aos definidos no BD? Se no PostgreSQL eu defino matricula como serial, na classe, eu definiria matricula como int, long, biginteger,...? E a dtNasc? Na classe seria Date, Calendar, Gregoriancalendar,...? Estas são as minhas dúvidas (correspondência de tipos de dados de Java para Banco de Dados Relacional - nada de usar Hibernate ou algo parecido)...!!! Agradecendo a paciência e a atenção, Augusto
Responder

Gostei + 0

02/03/2012

Douglas Eric

dtNasc, horaInicial e horaFinal são objetos [url=http://docs.oracle.com/javase/7/docs/api/java/util/Date.html]java.util.Date[/url] Já a chave primária. Se for SERIAL é int Se for BIGSERIAL é long. Mas, eu sempre uso String para as chaves primárias (na aplicação, não no banco). Fica bem mais fácil em várias partes, não precisa converter.
Responder

Gostei + 0

02/03/2012

Douglas Eric

[quote="augustonunes"]Olá, Sekkuar, acho que não expliquei bem a minha primeira dúvida, mas vamos lá tentar esclarecer: - Imaginando que eu tenha uma tabela no Banco de Dados chamada tblAnotacao, cujos campos seriam: matricula serial primary key not null nome varchar(30) not null dtNasc date horaInicial timestamp horaFinal timestamp valorPago numeric(10,2) obs text Na definição de uma classe em Java, quais os tipos correspondentes aos definidos no BD? Se no PostgreSQL eu defino matricula como serial, na classe, eu definiria matricula como int, long, biginteger,...? E a dtNasc? Na classe seria Date, Calendar, Gregoriancalendar,...? Estas são as minhas dúvidas (correspondência de tipos de dados de Java para Banco de Dados Relacional - nada de usar Hibernate ou algo parecido)...!!! Agradecendo a paciência e a atenção, Augusto
Tipos de dados relactivo aos campos ------------------------------------------------------------------ Campo Tipo em BD Tipo em Java ------------ ---------------- ------------------------------- matricula serial int nome varchar(30) String dtNasc date Date horaInicial timestamp TimeStamp horaFinal timestamp TimeStamp valorPago numeric(10,2) double obs text String ------------------------------------------------------------------ Obs: Podes usar String para facilitar em todos os campos, excepto aos campos que representam numeros
Responder

Gostei + 0

02/03/2012

Douglas Eric

[quote="Chandimba"] Tipos de dados relactivo aos campos ------------------------------------------------------------------ Campo Tipo em BD Tipo em Java ------------ ---------------- ------------------------------- matricula serial int nome varchar(30) String dtNasc date Date horaInicial timestamp TimeStamp horaFinal timestamp TimeStamp valorPago numeric(10,2) double obs text String ------------------------------------------------------------------ Obs: Podes usar String para facilitar em todos os campos, excepto aos campos que representam numeros
Usar TimeStamp em java??? E double para valores financeiros?
Responder

Gostei + 0

02/03/2012

Douglas Eric

[quote="sekkuar"][quote="Chandimba"] Tipos de dados relactivo aos campos ------------------------------------------------------------------ Campo Tipo em BD Tipo em Java ------------ ---------------- ------------------------------- matricula serial int nome varchar(30) String dtNasc date Date horaInicial timestamp TimeStamp horaFinal timestamp TimeStamp valorPago numeric(10,2) double obs text String ------------------------------------------------------------------ Obs: Podes usar String para facilitar em todos os campos, excepto aos campos que representam numeros
Usar TimeStamp em java??? E double para valores financeiros?
------------------------------------------------------------------ TimeStamp -> classe do pacote java.sql numeric(10,2) - indica um número real. e double, float, BigDecimal tratam desses casos. se tiveres uma sugestão melhor ou outra alternativa, nos indica para que tambem possamos usá-la
Responder

Gostei + 0

02/03/2012

Douglas Eric

[quote="Chandimba"][quote="sekkuar"][quote="Chandimba"] Tipos de dados relactivo aos campos ------------------------------------------------------------------ Campo Tipo em BD Tipo em Java ------------ ---------------- ------------------------------- matricula serial int nome varchar(30) String dtNasc date Date horaInicial timestamp TimeStamp horaFinal timestamp TimeStamp valorPago numeric(10,2) double obs text String ------------------------------------------------------------------ Obs: Podes usar String para facilitar em todos os campos, excepto aos campos que representam numeros
Usar TimeStamp em java??? E double para valores financeiros?
------------------------------------------------------------------ TimeStamp -> classe do pacote java.sql numeric(10,2) - indica um número real. e double, float, BigDecimal tratam desses casos. se tiveres uma sugestão melhor ou outra alternativa, nos indica para que tambem possamos usá-la Eu não vejo necessidade de usar o TimeStamp, até porque, isso iria fazer que você tivesse que usar o pacote java.sql na aplicação inteira. Só um Date resolve. E sim, BigDecimal devia ser usado nesse caso, não double. Double perde a precisão e não deve ser usado em valores financeiros
Responder

Gostei + 0

02/03/2012

Douglas Eric

[quote="sekkuar"] Eu não vejo necessidade de usar o TimeStamp, até porque, isso iria fazer que você tivesse que usar o pacote java.sql na aplicação inteira. Só um Date resolve.
Eu normalmente gosto de usar o TimeStamp mas vou lembrar da tua dica [quote="sekkuar"] E sim, BigDecimal devia ser usado nesse caso, não double. Double perde a precisão e não deve ser usado em valores financeiros
também vou lembrar disso... ------------------------------------------------------------------------------------- eh bom saber que podemos ouvir, estudar e analisar ideias alheias... isso nos nutre de conhecimento
Responder

Gostei + 0

02/03/2012

Augusto Nunes

Pessoal, quero agradecer a ajuda de todos, e pesquisando um pouco mais na Internet, achei algumas informações nesse link http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-type-conversions.html Penso que ajuda uma pouco a pensarmos nas possibilidades (e olha que eu estava somente procurando uma informação para associar PostgreSQL e Java !!!). Será que alguém sabe se existe essa mesma estrutura de equivalências para o PostgreSQL? Até agora não achei nada parecido... Augusto
Responder

Gostei + 0

02/03/2012

Douglas Eric

Só achei isso http://archives.postgresql.org/pgsql-jdbc/2010-10/msg00062.php
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar