IDADE NO SELECT
Como faço para encontrar a idade tipo: 1 ano 3 meses 5 dias
Quero exibir num ListView, agrdeço quem ajudar.
Até agora fiz assim:
"select *, nascimento, date - nascimento / 365,25 AS Idade from tabela"
Mas dar a idade e uma imensa disma, 14,46161613160651
Quero exibir num ListView, agrdeço quem ajudar.
Até agora fiz assim:
"select *, nascimento, date - nascimento / 365,25 AS Idade from tabela"
Mas dar a idade e uma imensa disma, 14,46161613160651
tenta assim:
"select *, nascimento, Int(DateDiff("y", CDate(format(nascimento,"DD/MM/YYYY")), Date) / 365.25) AS Idade from tabela"
"select *, nascimento, Int(DateDiff("y", CDate(format(nascimento,"DD/MM/YYYY")), Date) / 365.25) AS Idade from tabela"
Carinha o código a seguir faz isso, só que pelo VB, tipo, daà vc pega os dados e exibe no ListView usando o código:
Para usar no seu caso (mostrarei populando um ListBox, daà vc converte pra um ListView):
Qualquer dúvida poste...flw
Public Function PegaDataDif(ByVal Data1 As Date, Optional ByVal Data2 As Date) As String()
Dim Ano As Integer, Mes As Integer, Dia As Integer
Dim v(2) As String
If Data2 = Empty Then Data2 = Date
Ano = DateDiff("YYYY", Data1, Data2)
Mes = (DateDiff("M", Data1, Data2) Mod 12)
If Month(Data1) > Month(Now) Then
Ano = Ano - 1
End If
Dia = Day(Data2) - Day(Data1)
If Dia < 0 Then
Mes = Mes - 1
Dia = Day(DateSerial(Year(Data2), Month(Data2), 0)) + Dia
End If
v(0) = Ano: v(1) = Mes: v(2) = Dia
PegaDataDif = v
End Function
Para usar no seu caso (mostrarei populando um ListBox, daà vc converte pra um ListView):
Dim Dt() As String
rst.Open "SELECT * FROM Tabela"
Do While Not rst.EOF
Dt = PegaDataDif(rst("nascimento"))
List1.AddItem "Nome: " & rst("NOME")
List1.AddItem ">Idade: " & Dt(0) & " anos " & Dt(1) & " meses " & Dt(2) & " dias."
rst.MoveNext
Loop
Qualquer dúvida poste...flw
Não entendi direito, achei que a variavel Dt fosse carregada no Do While... Veja o códiugio novamente por favor.
Verdade carinha, esqueci de carregar, mas olha lá agora que eu arrumei...flw
Valeu Brothinho... Vou testar e te pontuar. Brigadu!!!
Desculpe por não ter avisado antes, uso o FireBird, será que funciona? Vlw
Citação:CBTECH escreveu:
Desculpe por não ter avisado antes, uso o FireBird, será que funciona? Vlw
Tb uso FB e te digo que funfa sim, mas repare que a conta é feita pelo VB e não pelo BD...flw
Carinha, o código funcionou perfeito! Dei uma melhorada somente pra mostrar apenas 3 meses; 21 dias; quando for o caso e não 0 anos, 3 meses ... Muito obrigado Matioli.
Tópico encerrado , respostas não são mais permitidas