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 23-04-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Restar Fechas en Firebird

Hola, estoy haciendo un procedimiento almacenado que me calcule la edad de una persona conociendo (o no) su fecha de nacimiento. Estoy usando Firebird 2.1 y la base está en dialecto 3.
Les comento, como la fecha de nacimiento puede ser nula, utilizo la funcion COALESCE para obtener una fecha de nacimiento. Luego la idea es a la fecha actual (CURRENT_DATE) restarle esa fecha y posteriormente extraer el año de esa fecha. El tema es que me tira error cuando hago la resta entre las fechas. He buscado por la web pero no encuentro mucho, o lo que encuentro no da resultados. Adjunto el codigo del procedimiento. Gracias!!
Código SQL [-]
        
   fecha_ini=coalesce(:fecha_nacimiento, CURRENT_DATE);     
   tmp=CURRENT_DATE;
   tmp=:tmp - :fecha_ini;
   edad=EXTRACT(YEAR from :tmp);
   SUSPEND;
Responder Con Cita
  #2  
Antiguo 23-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que no he entendido bien, si quieres saber la diferencia entonces fechafinal - fechainicial.
Pero de ahí por qué quieres extraer el año, ¿el año de qué?.
Ejemplo:
Código Delphi [-]
select cast (('now' - fechacreacion)/365 as integer) from TBCLIENTES
Responder Con Cita
  #3  
Antiguo 23-04-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por rruffino Ver Mensaje
Hola, estoy haciendo un procedimiento almacenado que me calcule la edad de una persona conociendo (o no) su fecha de nacimiento.
Me parece que algo falla aquí. ¿Cómo se supone que se puede saber la edad de una persona si se desconoce su fecha de nacimiento?

Cita:
Empezado por rruffino Ver Mensaje
Les comento, como la fecha de nacimiento puede ser nula, utilizo la funcion COALESCE para obtener una fecha de nacimiento. Luego la idea es a la fecha actual (CURRENT_DATE) restarle esa fecha y posteriormente extraer el año de esa fecha. El tema es que me tira error cuando hago la resta entre las fechas. He buscado por la web pero no encuentro mucho, o lo que encuentro no da resultados. Adjunto el codigo del procedimiento. Gracias!!
Código SQL [-] fecha_ini=coalesce(:fecha_nacimiento, CURRENT_DATE); tmp=CURRENT_DATE; tmp=:tmp - :fecha_ini; edad=EXTRACT(YEAR from :tmp); SUSPEND;
Si fuera nula en fecha ini tendrías justamente la FECHA ACTUAL. Como en tmp también tienes la fecha actual, dicha resta queda en cero. Es obvio que eso no calcula la edad... Replantéate la lógica.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 23-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Totalmente de acuerdo con ambos.

Me parece lógicamente incorrecto forzar el valor de la edad del campo fecha_ini. NULL es igual a desconocido y es la respuesta que corresponde dar acerca de la edad de una persona, si se ignora su fecha de nacimiento.

Y tampoco alcanzo a comprender el por qué del procedimiento como para sugerir alguna alternativa...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-04-2012 a las 20:51:19.
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
restar fechas hugo_Junior Varios 12 12-05-2008 17:33:46
restar fechas sql Oraxtar SQL 16 21-01-2008 22:01:44
Existe alguna función en Firebird que me permita restar fechas??? Nelly Varios 1 06-07-2007 21:27:56
Como Restar 2 Fechas en FireBird???? AGAG4 Firebird e Interbase 2 26-12-2005 14:23:49
restar dos fechas seken Varios 4 15-08-2003 23:34:56


La franja horaria es GMT +2. Ahora son las 21:48:41.


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