Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

calcular la edad

Estas en el tema de calcular la edad en el foro de SQL Server en Foros del Web. necesito calcular la edad de un trabajor pra un sistema. solo cuento con la fecha de ingreso. para generar un reporte con report builder. ayuda....
  #1 (permalink)  
Antiguo 22/03/2011, 09:26
Avatar de cesarcaes  
Fecha de Ingreso: marzo-2010
Mensajes: 57
Antigüedad: 14 años, 1 mes
Puntos: 1
calcular la edad

necesito calcular la edad de un trabajor pra un sistema.
solo cuento con la fecha de ingreso. para generar un reporte con report builder.
ayuda.
  #2 (permalink)  
Antiguo 22/03/2011, 09:47
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: calcular la edad

Creo que necesitamos mas datos para poder ayudarte...

a la tabla que apuntas, los campos...

el que nos digas que tienes solo la fecha de ingreso, no significa nada...
  #3 (permalink)  
Antiguo 22/03/2011, 10:09
Avatar de cesarcaes  
Fecha de Ingreso: marzo-2010
Mensajes: 57
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: calcular la edad

Ok. Tengo la tabla empleados con los campos fechaingreso, fecharetiro, nombre, ficha la cual es el campo clave, cedula.....

Necisito calcular la antiguedad al la fecha que se genere el reporte.
Y mostrarala en dias, año y meses por ejemplo

5 años 3 mese con 12 dias
  #4 (permalink)  
Antiguo 22/03/2011, 13:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: calcular la edad

Ya se habia publicado una funcion que te hace el trabajo, aun asi, la vuelvo a poner.

CREATE FUNCTION EntreFechasAñoMesDia (
@CadenaInicio as nvarchar(10),
@CadenaFin as nvarchar(10))
RETURNS nvarchar (100)
AS
BEGIN

declare @AñoInicio int
declare @MesInicio int
declare @DiaInicio int
declare @AñoFin int
declare @MesFin int
declare @DiaFin int
declare @Años int
declare @Meses int
declare @Dias int
declare @FechaInicio datetime
declare @FechaFin datetime
declare @Texto nvarchar(100)
--Para comprobar las fechas
if isdate(@CadenaInicio)=0 return('La fecha de Inicio no es correcta')
if isdate(@CadenaFin)=0 return ('La fecha de Fin no es correcta')
if datediff(dd, @CadenaInicio, @CadenaFin) = 0 return('La fecha de Inicio es igual que la de Fin')
--Asigna las cadenas a las fechas, inviertiéndolas si es necesario y cambiando el mensaje de salida.-
if datediff(dd, @CadenaInicio, @CadenaFin) > 0
begin
set @FechaInicio = @CadenaInicio
set @FechaFin = @CadenaFin
set @Texto = 'Pasa'
end
else
begin
set @FechaInicio = @CadenaFin
set @FechaFin = @CadenaInicio
set @Texto = 'Falta'
end
--Asigna los valores individuales de día, mes y año, para hacer los cálculos.-
set @DiaInicio = day(@FechaInicio)
set @MesInicio = month(@FechaInicio)
set @AñoInicio = year(@FechaInicio)

set @DiaFin = day(@FechaFin)
set @MesFin = month(@FechaFin)
set @AñoFin = year(@FechaFin)


--Comprueba si el día es menor o igual al de fin.-
if @DiaFin - @DiaInicio >= 0
begin
set @Dias = @DiaFin - @DiaInicio
end
--Si no, calcula la suma en días, desde el día de Inicio a fin de mes, mas los días de Fin, y le resta uno al mes de Fin.-
else
begin
set @Dias = (day(dateadd(mm,1,cast(('01/' + str(@MesInicio) + '/' + str(@AñoInicio)) as datetime)) - 1 )- @DiaInicio) + @DiaFin
set @MesFin = @MesFin - 1
end
--Lo mismo con el mes.-
if @MesFin - @MesInicio >= 0
begin
set @Meses = @MesFin - @MesInicio
end
else
begin
set @Meses = (@MesFin - @MesInicio) + 12
set @AñoFin = @AñoFin - 1
end

set @Años = @AñoFin - @AñoInicio
--A partir de qaquí ya tenemos los vlores del año, mes y día, lo siguiente es para presentarlo correctamente.-
declare @CadDia as varchar(20)
declare @CadMes as varchar(20)
declare @CadAño as varchar(20)

if @Dias = 0 set @CadDia = ''
if @Dias = 1 set @CadDia = ltrim(str(@Dias)) + ' día '
if @Dias > 1 set @CadDia = ltrim(str(@Dias)) + ' días '

if @Meses = 0 set @CadMes = ''
if @Meses = 1 set @CadMes = ltrim(str(@Meses)) + ' mes'
if @Meses > 1 set @CadMes = ltrim(str(@Meses)) + ' meses'


if @Años = 0
begin
set @CadAño = ''
if @Meses > 1 set @Texto = @Texto + 'n'
if @Meses = 0 and @Dias >1 set @Texto = @Texto + 'n'
end
if @Años = 1 set @CadAño = ltrim(str(@Años)) + ' año'
if @Años > 1
begin
set @CadAño = ltrim(str(@Años)) + ' años'
set @Texto = @Texto + 'n'
end

if @Meses <> 0
begin
if @Dias <> 0
begin
set @CadMes = @CadMes + ' y '
if @Años <> 0 set @CadAño = @CadAño + ', '
end
else
if @Años <> 0 set @CadAño = @CadAño + ' y '
end
else
if @Años <> 0 and @Dias <> 0 set @CadMes = @CadMes + ' y '
--end
Set @Texto = @Texto + ' ' + @CadAño + @CadMes + @CadDia
RETURN @Texto
END
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 24/03/2011, 06:09
Avatar de cesarcaes  
Fecha de Ingreso: marzo-2010
Mensajes: 57
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: calcular la edad

hola a todos. lo que pasa es que estoy utilizando una aplicacion que no me permite usar las funciones qu yo programe en sql server.
la funcion anterior funciona pero no puede acceder desde el report builder. una aplicacion para generar reportes con sql server.


quisiera algo asi
case when fechaingreso<>'' then antiguedad else 0.

eso es lo que puedo hacer. pero no encuentro una funcion de sql server que me ayude con la antiguedad???

Etiquetas: edad, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.