SELECT COM DATEDIFF

USUARIO.EXCLUIDOS 18/09/2006 15:10:39
#172174
Cara então você vai ter que fazer o calculo com o vb e depois colocar o resultado desse calculo no select
USUARIO.EXCLUIDOS 18/09/2006 16:42:52
#172225
Colega, de fato o FireBird não tem esta função que vc quer, mas existe ainda solução sem que tenha adicionar mais um campo, vc pode usar uma UDF, que são como APIs do windows especificas para o FireBird, mas para usar a UDF necessária, vc terá de fazer o download dela no seguinte link: TBUDF 2.2. Após fazer o download, descompacte e copie o arquivo tbudf.dll para a pasta de UDFs de seu FireBird (o local padrão para o FB 1.5 é: C:\Arquivos de programas\Firebird\Firebird_1_5\UDF), após feito isso, é necessário em seu gerenciador do firebird (IBExpert, IBOConsole ou outro) executar o seguinte script:

declare external function udf_YearsBetween
timestamp, timestamp
returns integer by value
entry_point 'udf_YearsBetween' module_name 'tbudf';


Existem várias UDFs nesta DLL (vide tbudf.sql que vem no arquivo ZIP), mas precisará apenas desta que pega a diferença entre dois anos, pega a idade correta (considerando não só um ano menos outro, mas se já está no outro mês, tipo com o DateDiff, uma pessoa nascida em 02/10/1989 retornaria 17 anos, mas como ainda não fez niver o correto seria 16 anos, está UDF retorna 16)...
Agora para usá-la é simples:

Para pegar a idade:

SELECT udf_YearsBetween(Nascto, CAST('NOW' AS DATE)) FROM Tabela


  • CAST('NOW' AS DATE) retorna a data atual no servidor do FireBird

    Para usá-la no seu exemplo:

    SELECT * FROM tabela WHERE udf_YearsBetween(nascimento, CAST('NOW' AS DATE)) < 12


    Ou então pode pegar a data pelo VB (eu gosto de pegar do servidor SEMPRE):
    SQL = "SELECT * FROM tabela WHERE udf_YearsBetween(nascimento, '" & Date & "') < 12"


    Bem, foi a melhor solução que encontrei, lembre-se de que terás de levar esta DLL para seu cliente tb, qualquer dúvida poste...flw
  • CBTECH 18/09/2006 17:04:37
    #172236
    Cara vc foi didático e tudo, pena que não posso testar agora. Mas logo te darei notícias. Obrigado!
    USUARIO.EXCLUIDOS 18/09/2006 17:16:37
    #172246
    Resposta escolhida
    Citação:

    CBTECH escreveu:
    Cara vc foi didático e tudo, pena que não posso testar agora. Mas logo te darei notícias. Obrigado!



    Viu, daqui uns dias to escrevendo vários artigos...
    Mas blz, testei aqui e funfa sim, precisando vc dá um toque...flw
    Página 2 de 2 [15 registro(s)]
    Tópico encerrado , respostas não são mais permitidas