Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Wink Procedimiento Almacenado y Fecha

Hola a todos! Estoy haciendo un procedimiento almacenado que me saca la fecha de nacimiento de un cliente y calcula la edad del mismo entre otros datos que saco del propio cliente. El problema lo tengo cuando la fecha es nula, me retorna como que el valor es 30/12/1899. Estuve leyendo y ese valor hace referencia al valor cero de la fecha, pero asi mismo no me funciona este codigo que es donde calculo la edad:
Código SQL [-]
        if(:fecha_nacimiento is not null)then
          begin           
            tmp=CURRENT_DATE - :fecha_nacimiento;
            edad=EXTRACT(YEAR from tmp);
          end
        else
          begin
            edad=0;
          end
Agradezco si alguien me tira una mano.
Gracias y saludos!!!
Responder Con Cita
  #2  
Antiguo 03-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Estás seguro que la fecha es nula?, seguramente tiene puesto cero, ¿lo has comprobado?

Por cierto, estaría bien saber qué base de datos es.
Responder Con Cita
  #3  
Antiguo 03-04-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Respondiendo

Hola! gracias por la respuesta, estoy usando firebird 2.1, en dialecto 3. Efectivamente cuando me fijo en la base de datos en la tabla los datos figuran como nulos y no ceros.
Saludos!
Responder Con Cita
  #4  
Antiguo 03-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero en el código que has puesto, el valor de fecha_nacimiento, es una variable/parámetro, eso no lo obtiene de la base de datos
Responder Con Cita
  #5  
Antiguo 03-04-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
REspuesta

Es uno de los varios parametros de salida que tengo en el procedimiento almacenado que estoy haciendo. El dato de fecha de nacimiento lo saco de la tabla clientes y lo paso a ese parametro.
Saludos!
Responder Con Cita
  #6  
Antiguo 03-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y cuando es nulo, ¿qué le pasas?, ¿dónde está el código?
Responder Con Cita
  #7  
Antiguo 03-04-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Respuesta

Este es el cuerpo del procedimiento:
Código SQL [-]
      
      for select id_integrante, apellido_nombre, tipo_doc, numero_documento, fecha_nacimiento,
                 inicio_vigencia, parentesco, residencia
      from INTEGRANTE_GRUPO_FAMILIAR
      where cliente=:num_cliente and
            marcado=0
      into :id_integrante, :apellido_nombre, :tipo_doc, :numero_documento,
           :fecha_nacimiento, :inicio_vigencia, arentesco, :residencia do
      begin    
        if(fecha_nacimiento is not null)then
          begin           
            tmp=CURRENT_DATE - :fecha_nacimiento;
            edad=EXTRACT(YEAR from tmp);
          end
        else
          begin
            edad=0;
          end
        SUSPEND;
Responder Con Cita
  #8  
Antiguo 03-04-2012
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Que tal así:
Código SQL [-]
        if(coalesce(:fecha_nacimiento,'1899-12-30') > '1899-12-30')then           
       begin
             tmp=CURRENT_DATE - :fecha_nacimiento;
             edad=EXTRACT(YEAR from tmp);
       end         
      else    
      begin
             edad=0;
      end
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
Respuesta



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
Saber Fecha de la Ultima modificación a un Procedimiento Almacenado Efren2006 Firebird e Interbase 2 29-10-2011 03:36:28
Obtener Fecha y Hora en un Procedimiento Almacenado Efren2006 SQL 2 17-01-2009 15:04:38
Procedimiento almacenado con fecha VRO MySQL 8 17-10-2007 08:23:09
Procedimiento Almacenado rodrigo19 Oracle 5 22-08-2007 22:55:40
Fecha modificacion Procedimiento almacenado lgarcia SQL 2 28-05-2007 21:33:54


La franja horaria es GMT +2. Ahora son las 01:55:19.


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