Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

webfuture

Busca por idade em campo dd/mm/aaa

Recommended Posts

Galera estou montando um sistema de relacionamentos onde o usuário preenche a data de nascimento dele em uma das etapas do cadastro, porém no sistema preciso fazer uma busca de idades e o formato do cadastro é dd/mm/aaaa.O usuário na busca poderá escolher idade inicial e final, estou com duvidas sobre como fazer isto, atualmente o campo no banco de dados esta como NVARCHAR devo mudar para SMALLDATETIME ?Alguém tem algum script que faça isto ou me indica o que fazer?WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não sei se é isso que você quer, mas tenho um script que quando o usuário termina de digitar a data em um campo, mostro a idade logo em seguida em outro. Vou te passar o script, só que está em JavaScript, infelizmente não está em asp puro.

function getIdade(obj, destino) {

if (obj.value.length == 10) {

var hoje = new Date();

var nascimento = new Date();

nascimento.setDate(obj.value.substr(0,2));

nascimento.setMonth(obj.value.substr(3,2) - 1);

nascimento.setYear(obj.value.substr(6,4));

idade = hoje.getFullYear() - nascimento.getFullYear();

if (nascimento.getMonth() > hoje.getMonth()) {

idade = idade - 1;

} else {

if (nascimento.getMonth() == hoje.getMonth()) {

if (nascimento.getDate() > hoje.getDate()) {

idade = idade - 1;

}

}

}

edittext = eval(destino);

edittext.value = idade;

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala velho beleza, então o que eu tô precisando mesmo é de um script que verifique se os parametros da busca coincidem com os dados do cadastro no banco de dados. Não sei se tem um script que verifique no proprio select no caso o tipo de campo como dd/mm/aaaa se a idade esta entre a idade inicial e a idade final que o usuario digitou para buscar se é a idade do usuario no banco de dados.. sera que tem como ?No caso o que eu preciso é de um script que verifique o campo data_nascimento no formato (dd/mm/aaaa) e veja se a idade do usuario cadastrado esta entre a que a pessoa buscou.WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pode fazer é com o DateAdd "criar" as datas antes de entrar na sua SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza a parada é usar o dateadd mesmo como disse o salgado...idadeinicial = 18idadefinal = 25"SELECT CAMPO FROM TABELA WHERE DATA BETWEEN #" & DATEADD("y",idadeinicial,Date)& "# AND #" & DATEADD("y",idadefinal,Date)& "#"ali tem que tá o valor negativo...não sei se tem uma função que faz isso mas voce pode subtrair o valor duas vezes...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim o valor negativo ? Negativo na idade tipo -18 e -25 ?Meu SQL saiu assim:SELECT * FROM TABELA WHERE data_nascimento BETWEEN 31/12/2005 AND 7/1/2006 Coloquei 18 na idade inicial e 25 na idade final, ,meu tipo de campo deixei como datetime pois estava dando pau na conversão e as idades no banco estao assim dd/mm/aaaaWebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

era isso mesmo que tava pensando...

 

diminuindo 18 anos ficou ainda em 2005??

 

tem algo errado...

 

como esta o codigo do sql???

 

-------------------------------------------------

 

EDITADO:

 

entendi o erro...

ta errada a sintaxe do DateAdd

 

mude o y por yyyy e teste...

 

assim

 

"SELECT CAMPO FROM TABELA WHERE DATA BETWEEN #" & DATEADD("yyyy",idadeinicial,Date)& "# AND #" & DATEADD("yyyy",idadefinal,Date)& "#"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora ficou assim:SELECT * FROM TABELA WHERE data_nascimento BETWEEN 13/12/2023 AND 13/12/2030isto colocando 18 e 25 nas idadesA parte do SQL esta assim:SQL = SQL & " data_nascimento BETWEEN " & DATEADD("yyyy",idade_inicial,Date)& " AND " & DATEADD("yyyy",idade_final,Date)& " and "Se eu deixo os sinais de # quando executo o código ele da erro então retirei, não sei se pode ter algo a ver mas acho que não.. uso SQL SERVER 2000.WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta usando negativo ou positivo o valor das idades...aparentemente ta trocado o sinal doq ue deveria...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo assim, se o usuário digitar 18 e 25 deixo como idade_inicial = -18 e idade_final = -25 no SQL depois de executado esta saindo assim agora:SELECT * FROM TABELA WHERE data_nascimento BETWEEN 13/12/1987 AND 13/12/1980 Mas ainda não esta trazendo resultados...deixei os cadastros no banco de dados como 15/12/1987 para testar mas ainda não esta trazendo nada ainda...tenho que mudar algo nesta linha abaixo?:SQL = SQL & " data_nascimento BETWEEN " & DATEADD("yyyy",idade_inicial,Date)& " AND " & DATEADD("yyyy",idade_final,Date)& " and "WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

é tem de inverter a data inicial e a final e se o campo é data tem que ter o ###talvez precise inverte o dia e o mes mas por hora teste assimSQL = SQL & " data_nascimento BETWEEN #" & DATEADD("yyyy",idade_final,Date)& "# AND #" & DATEADD("yyyy",idade_inicial,Date)& "# and "esse and no final tem mesmo???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu deixo com os sinais de # da o seguinte erro:Tipo de erro:Microsoft OLE DB Provider for SQL Server (0x80040E14)Line 1: Incorrect syntax near '#'.Se eu tiro o SQL fica assim:SELECT * FROM TABELA WHERE DATA_NASCIMENTO BETWEEN 13/12/1980 AND 13/12/1987 Porém não traz resultados.O AND existe sim.. além deste existem diversos outros caso o usuario escolha os filtros...WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

teste apenas com a data até encontrar a sintaxe correta...depois adiciona o restante dos filtros...é porque não sei a sintaxe de datas pro sql server e deve ser diferente do access e do mysql...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.