Como trabalhar com datas nessa situação?

14 respostas
vitorkgb

Galera, tenho uma tabela que tem a informação em registro (linha) de data inicio e data termino de determinada situação
Nome Data Inicio Data Termino Situação
EX: Vitor 21/09/06 06/10/06 Férias

Isso eu teria milhares de registros e digamos que um dia que eu resolva pegar todas as situações dos funcionário no período de 22/09/06 a 16/10/06
quando a data do registro estava depois da minhas datas que queria pegar eu usava between, mas nesse caso ele não pega, alguém saberia o que fazer??

14 Respostas

finotti
"select * from tabelaX where data between ? and ?"

to usando between nessa situação e me atende bem. lembrando que uso java.sql.Date.

você pode usar também o método compareTo

vitorkgb

falei que nesse caso o between não funciona… se entendeu o que falei e testar vai ver quer não!!!

finotti

bom, entao tente se explicar melhor.

o que entendi foi o seguinte:
você quer fazer uma consulta por um intervalo de data, (data inicial e data final).
não consigo entender como o between não te atenda.

boa sorte ai!

vitorkgb

o between só trabalha com uma data, não com um período se eu tiver um período 21/09/08 a 06/10/08 no registro
e querer pegar todo mundo do período de 22/09/08 e 02/10/08

o between pegaria a primeira data inicial 21/09/08… está dentro do meu período?? 22/09 a 02/10?? não… e se eu fizesse com a data final idem…

mas note que o dentro do período 21/09 até 06/10 ele passa pelo período que determinei… então seria o próprio período, mas como transformar isso em sql?? pegar essa situação, ou mesmo em Java.

Fernando_Generoso_da

teus campos data inicio e data fim, sao realmente do tipo data, no banco?? ou apenas uma String que representa a data??

vitorkgb

são sim… tipo data… to usando between para outras situações… mas nessa não funciona

finotti

de onde vc tirou isso???
a tradução de between é “entre”, ou seja entre uma data e outra.

vou por mais um exemplo aqui

SELECT campos FROM tabela WHERE campo_data BETWEEN data_1 AND data_2

traduzindo:
TRAGA OS CAMPOS DA TABELA ONDE A DATA ESTIVER ENTRE A DATA INICIAL E A DATA FINAL.

vitorkgb

por isso que o between não me serviria…, cara tenta entender o problema e vai ver que não se aplica o between… só conhece o between? tá muito preso a ele.

vitorkgb

Se eu tenho um cara que trabalhou de 21/09/08 a 06/10/08… e digamos que eu queira todo mundo que trabalhou entre 22/09/08 a 02/10/08…, concorda que ele trabalhou dentro do período que quis?
o que vc faria??? between??? não funciona nesse caso

finotti

tentei ajudar, se não consegui, problema seu (literalmente) …

só acho que vc deveria chegar com um pouco mais de humildade.
ninguém aqui tem obrigação de responder nada.
e pra quem diz que between só trabalha com uma data, vc tá bem mascarado!

boa sorte ai!

Fernando_Generoso_da

Uma maneira é pegar TODAS as datas que o cara trabalhou…e aplicar o between do intervalo que tu deseja para cada data trabalhada do cara e verificar se está dentro…se uma estiver, é pq ao menos um dia ele trabalhou no período escolhido…acho que dessa forma dá…

vitorkgb

Finotti, não é questão disso, é que vc não análisa o problema para responder, respondeu meio que aleatoriamente, deve ser um excelente profissional!

Fernando, é o que estou entrando fazer… naum usarei o between, to pegando o intervalo dele e aplicando passando nos dias.

71C4700

Cara tive um problama parecido e era so o tipo do Date que estava utilizando, pode se isso não sei.
eu tava usando o Date do pacote util, ai quando mudei por pacote sql funcionou belezinha…
Não sei se resolve seu caso, mas são situações e erros que não cometo mais…EHheHEE

vitorkgb

valeu cara… é nos comandos sql, só aceita o Date do java.sql

eu to trabalhando justamente com esse… a consulta só pode ser nesse pacote

Criado 5 de novembro de 2008
Ultima resposta 5 de nov. de 2008
Respostas 14
Participantes 4