Ir para conteúdo

POWERED BY:

Arquivado

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

webfuture

Pegar idade do usuário a partir do nascimento

Recommended Posts

Olá galera, estou com um problema para pegar a idade do usuário a partir de sua data de nascimento, tenho o script abaixo que se coloco a data de nascimento na mão, ai funciona direitinho ele mostra a idade do usuário tudo certo, agora se eu coloco este script dentro de um loop onde pego a data de nascimento do usuário do banco de dados ele da erro:

 

Vejam o script:

 

Session LCID=1046'Nascimento="24/10/1971"Anos= Cint(DateDiff("m",Nascimento,Date)/12)DifDia= (DateDiff("d",Nascimento,Date) Mod 365)DifDia= DifDia - (Cint(DateDiff("d",Nascimento,Date)/365)/4)If DifDia<0 ThenResponse.Write "você tem " & Cint(Anos-1) & " anos e " & (365+DifDia) & " dias"ElseResponse.Write "você tem " & Anos & " anos e " & (DifDia) & " dias"End IF

Vejam o erro:

 

Tipos incompatíveis: 'nascimento'

 

Alguém sabe como resolver este problema ?

 

WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

O tipo de dados no banco é DateTime? se não for tu deve converter antes de calcular a idade.qualquer coisa posta o codigo onde tu pega a data do banco.falow cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Schneider, me tira uma dúvida, era para mudar o tipo de campo no SQL (TABELA) ou para colocar um script de conversão ?Eu mudei o tipo de campo na tabela, porém agora quando vou efetuar um novo cadastro ele da erro se escolho uma data por exemplo: 25/12/1970.E na hora de mostrar o nascimento da pessoa ele inverte ao inves de ficar dd/mm/aaaa fica mm/dd/aaaa.Se alguém puder me indicar como resolver...WebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera, consegui resolver. Não sei se da maneira mais correta, mas inverti na hora de gravar as informações no banco de dd/mm/aaaa para mm/dd/aaaa.Valeu,WeBfuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

para ficar independente das configurações de região do banco e servidor de aplicações, trabalhe sempre num formato geral como:

AAAA-MM-DD

 

flw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para isso tem uma função que eu uso, ai vai ela:

 

function convData(data_)				'response.write data_		'response.end					dia=datepart("d",data_)			mes=datepart("m",data_)			ano=datepart("yyyy",data_)			hora=datepart("h",data_)			minuto=datepart("n",data_)			segundo=datepart("s",data_)						dataUniversal=ano&"/"&mes&"/"&dia&" "&hora&":"&minuto&":"&segundo						convData=dataUniversal		end function

deixa a data no formato universal, --> AAAA-MM-DD

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera, estou precisando fazer um select num banco de dados para puxar usuarios de acordo com idades que o usuario pode escolher, ou seja, o usuario escolhe uma idade inicial e final para efetuar uma busca no banco no formato: dd/mm/aaaa 00:00:00, tentei com o DateDiff:idade_inicial = "18"idade_final = "27"DateDiff('y', nascimento, GetDate()) between " & idade_inicial & " and " & idade_final & "Invalid parameter 1 specified for datediff.Não rola, alguém pode me dar um help ? O banco de dados é SQL SERVERWebFuture

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,

 

Talvez este post devesse ser movido para área de SQL. Veremos a decisão dos moderadores.

 

Bom segue um exemplo bem simples (quase tosco) de com faze o select por idade:

CREATE TABLE #TMP(NASCIMENTO DATETIME)INSERT INTO #TMP(NASCIMENTO) VALUES ('1966/01/10')INSERT INTO #TMP(NASCIMENTO) VALUES ('1970/02/25')INSERT INTO #TMP(NASCIMENTO) VALUES ('1972/05/10')INSERT INTO #TMP(NASCIMENTO) VALUES ('2000/06/16')INSERT INTO #TMP(NASCIMENTO) VALUES ('2002/11/07')DECLARE @IDADE_INICIO INT, @IDADE_FIM INT ,		@DT_INICIO DATETIME, @DT_FIM DATETIME, 		@AA_INICIO CHAR(4), @MM_INICIO CHAR(2),		@AA_FIM CHAR(4), @MM_FIM CHAR(2)SELECT	@IDADE_INICIO = 30, @IDADE_FIM = 41, 	 	@DT_INICIO = DATEADD(YEAR,-1 * @IDADE_INICIO,GETDATE()), 		@DT_FIM = DATEADD(YEAR,-1 * @IDADE_FIM,GETDATE())SELECT 	@AA_INICIO =  CONVERT(CHAR(4),YEAR(@DT_INICIO)), @MM_INICIO =  CONVERT(CHAR(4),MONTH(@DT_INICIO))SELECT 	@AA_FIM =  CONVERT(CHAR(4),YEAR(@DT_FIM)), @MM_FIM =  CONVERT(CHAR(4),MONTH(@DT_FIM))----Registros que satisfazem a condiçãoSELECT 	*, DATEDIFF(YEAR,NASCIMENTO,GETDATE())FROM 	#TMPWHERE 	NASCIMENTO  BETWEEN @AA_FIM +'-' + RTRIM(LTRIM(@MM_FIM)) + '-30' AND		@AA_INICIO + '-' + RTRIM(LTRIM(@MM_INICIO)) + '-01'  		----Todos os Registros para conferênciaSELECT 	*, DATEDIFF(YEAR,NASCIMENTO,GETDATE())FROM 	#TMPDROP TABLE #TMP
Bom utilizei como referênci o post http://forum.imasters.com.br/index.php?showtopic=224856

coloboração de nosso colega eriva_br .

 

Como pode ser visto no exemplo tive de trabalhar somente com ANO/MES e fixar os dias.

Porque senão vai dar diferênça pois sempre exitirá um resto de dias, por isso fixei os dias.

Qdo for implementar a versão final lembre-se que como fixei o dia final em 30 ocorrerá um erro com o mês de fevereiro.

 

Acho que já dá para começar a discutir.

 

t+

 

 

 

Olá galera, estou precisando fazer um select num banco de dados para puxar usuarios de acordo com idades que o usuario pode escolher, ou seja, o usuario escolhe uma idade inicial e final para efetuar uma busca no banco no formato:

dd/mm/aaaa 00:00:00, tentei com o DateDiff:

 

idade_inicial = "18"

idade_final = "27"

 

DateDiff('y', nascimento, GetDate()) between " & idade_inicial & " and " & idade_final & "

 

Invalid parameter 1 specified for datediff.

 

Não rola, alguém pode me dar um help ? O banco de dados é SQL SERVER

 

WebFuture

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.