Fórum Tipos de Dados para Datas, Horas e Minutos #568827
28/02/2012
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
Posts
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
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()
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
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.
[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
[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?