Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 03-12-2011
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 59
Poder: 22
birmain Va por buen camino
Edad actual

Calcula la edad de una persona tal y como está convenido socialmente. (Hasta el cumpleaños no se incrementa la edad)

Código SQL [-]

SET NAMES ISO8859_1;

SET CLIENTLIB 'C:\Program Files (x86)\Firebird\Firebird_2_5\bin\fbclient.dll';

CONNECT 'cadena de conexion' USER 'SYSDBA' PASSWORD 'masterkey';





SET TERM ^ ; 



/******************************************************************************/
/***                           Stored Procedures                            ***/
/******************************************************************************/

CREATE PROCEDURE IUDF_EDAD (
    FECHANACIMIENTO DATE)
RETURNS (
    RESULTADO DECIMAL(15,4))
AS
BEGIN
  SUSPEND;
END^






SET TERM ; ^



/******************************************************************************/
/***                           Stored Procedures                            ***/
/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE IUDF_EDAD (
    FECHANACIMIENTO DATE)
RETURNS (
    RESULTADO DECIMAL(15,4))
AS
declare variable bisiestos float;
declare variable anionacimiento integer;
declare variable anioactual integer;
declare variable dias_diferencia float;
begin
 anionacimiento = extract(year from fechanacimiento);
 anioactual = extract(year from current_date);
 bisiestos = 0;
 while (anionacimiento <= anioactual) do
 begin
          if ((mod(anionacimiento, 100)= 0) or
             (mod(anionacimiento, 400)= 0) or
             (mod(anionacimiento, 4)= 0)) then bisiestos = bisiestos + 1;
         anionacimiento = anionacimiento + 1;
 end
 dias_diferencia = datediff(day, fechanacimiento, current_date);
 resultado = (dias_diferencia - bisiestos)/365;
 resultado = floor(resultado);
 suspend;
end^



SET TERM ; ^
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Stored Procedure gluglu Conexión con bases de datos 16 24-02-2011 17:41:24
Aportacion Funcion para calcular dias : DaysForDate bitbow Varios 1 08-11-2010 20:49:24
Conversion de números donald shimoda Varios 7 07-10-2008 19:57:48
Stored Procedure genera codigo Carlos Hurtado Firebird e Interbase 2 19-10-2005 19:38:19
Stored Procedure tgsistemas SQL 1 27-02-2004 13:10:33


La franja horaria es GMT +2. Ahora son las 19:58:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi