Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 03/04/2012
rruffino rruffino is offline
Miembro
 
Join Date: Dec 2004
Location: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 22
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!!!
Reply With Quote
  #2  
Old 03/04/2012
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví 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.
Reply With Quote
  #3  
Old 03/04/2012
rruffino rruffino is offline
Miembro
 
Join Date: Dec 2004
Location: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 22
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!
Reply With Quote
  #4  
Old 03/04/2012
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví 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
Reply With Quote
  #5  
Old 03/04/2012
rruffino rruffino is offline
Miembro
 
Join Date: Dec 2004
Location: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 22
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!
Reply With Quote
  #6  
Old 03/04/2012
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Y cuando es nulo, ¿qué le pasas?, ¿dónde está el código?
Reply With Quote
  #7  
Old 03/04/2012
rruffino rruffino is offline
Miembro
 
Join Date: Dec 2004
Location: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 22
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;
Reply With Quote
  #8  
Old 03/04/2012
RONPABLO's Avatar
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Join Date: Oct 2004
Posts: 1,514
Poder: 23
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"
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Saber Fecha de la Ultima modificación a un Procedimiento Almacenado Efren2006 Firebird e Interbase 2 29/10/2011 03:36
Obtener Fecha y Hora en un Procedimiento Almacenado Efren2006 SQL 2 17/01/2009 15:04
Procedimiento almacenado con fecha VRO MySQL 8 17/10/2007 08:23
Procedimiento Almacenado rodrigo19 Oracle 5 22/08/2007 22:55
Fecha modificacion Procedimiento almacenado lgarcia SQL 2 28/05/2007 21:33


All times are GMT +2. The time now is 14:02.


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