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

Problemas con fechas

Estas en el tema de Problemas con fechas en el foro de SQL Server en Foros del Web. Tengo mi Fecha_Nacimiento y mi Fecha_Actual y nececito restarle A la fecha actual la fech de nacimiento para que me devuelva el resultado como que ...
  #1 (permalink)  
Antiguo 24/06/2008, 10:18
 
Fecha de Ingreso: mayo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Problemas con fechas

Tengo mi Fecha_Nacimiento y mi Fecha_Actual y nececito restarle A la fecha actual la fech de nacimiento para que me devuelva el resultado como que faltan 15 dias etc..
haber si alguien me podria ayudar Gracias..
  #2 (permalink)  
Antiguo 24/06/2008, 10:41
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Problemas con fechas

bueno desde mi punto de vista sería algo así

donde getdate() me da la fecha actual a la que le resto mi fecha de nacimiento, me devuelme meses y días restantes para mi cumpleaños.

Código:
select month(getdate() - '03/01/1983') as meses, day(getdate() - '03/01/1983') as días
nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 24/06/2008, 10:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problemas con fechas

Consulte la funcion DATEDIFF
  #4 (permalink)  
Antiguo 24/06/2008, 11:16
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Problemas con fechas

Cita:
Iniciado por iislas Ver Mensaje
Consulte la funcion DATEDIFF
también es otra opción, probá con las dos creo que tenes bastante material, partiendo de cualquiera de las dos.

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 25/06/2008, 11:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con fechas

bro ya hice el codigo que me pasaste pero como es en access no jala entonces investige la funcion DateDiff eh hice este query pero en este me trai solo los dias que ah vivido esa persona y lo que yo quiero es que si la persona cumple mañana años que me aparezca que le falta un dia ojala y me puedan ayudar porque ya le intente de muchas formas y no aqui les dejo mi query que devuelve los dias vividos

Cita:
SELECT Clientes.Id, Clientes.Fecha_Cumple, DateDiff('d',[Fecha_Cumple],Date()) AS Dias
FROM Clientes;
  #6 (permalink)  
Antiguo 25/06/2008, 12:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problemas con fechas

Calitos_16,

aunque no trabajo con SQL Server, te diré que creo que eso se hace con la función DAYOFYEAR, pues lo que tú restas es al día del año en el que estamos el día del año en que nació la persona, pero teniendo en cuenta la existencia de bisiestos.
Yo he sacado esto de un manual de mysql y creo que te servirá adaptando la sintaxis:
SELECT nombrepersona, birthday,
IF(DAYOFYEAR(birthday) >= DAYOFYEAR(NOW()),
DAYOFYEAR(birthday) - DAYOFYEAR(NOW()),
DAYOFYEAR(birthday) - DAYOFYEAR(NOW())
DAYOFYEAR(CONCAT(YEAR(NOW()),'-12-31')))
AS distance
FROM nombretabla;

no sé si el now() por fecha de hoy lo utilizáis, ni el concat, pero sí creo que utilizáis DAYOFYEAR.

Te lo digo solo como orientación.
Habría que comprobar la precisión...

Última edición por jurena; 25/06/2008 a las 12:19
  #7 (permalink)  
Antiguo 25/06/2008, 18:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problemas con fechas

GeoAvila

¿Ya ejecuto la sentencia que propone y vio sus resultados?

select month(getdate() - '03/01/1983')
  #8 (permalink)  
Antiguo 26/06/2008, 10:43
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Problemas con fechas

Cita:
Iniciado por iislas Ver Mensaje
GeoAvila

¿Ya ejecuto la sentencia que propone y vio sus resultados?

select month(getdate() - '03/01/1983')
pues si en mi caso se ejecutó de manaera correcta setando el formato de fecha dmy

set dateformat dmy

me dio que faltaban 6 meses, aunque no me detuve a hacer calculos detenidamente, te ha dado otro resultado?

creo que fué un dato que se olvidó colocar y pido disculpas por no colocarlo.

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 26/06/2008, 15:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problemas con fechas

GeoAvila

Creo que si se pudiear hacer una simple resta con el signo (-) menos, no se hubieran creado las funciones.

Esa es mi opinion
  #10 (permalink)  
Antiguo 26/06/2008, 16:11
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Problemas con fechas

Cita:
Iniciado por iislas Ver Mensaje
GeoAvila

Creo que si se pudiear hacer una simple resta con el signo (-) menos, no se hubieran creado las funciones.

Esa es mi opinion
Si claro nunca dije que lo que propuse fuera perfecto. o si?
tu respuesta no me agrada, porque podes tratar una respuesta con más respeto o bien haciendo una observación.

Y sí, conozco la función DATEDIFF y la he usado,pero por algo se olvidó en ese momento, errar es de humanos y espero lo comprendas y NO espero ofender tu perfección.

de hecho desde mi punto de vista quedaría algo así

Código:
set dateformat dmy
declare @nacimiento datetime
set @nacimiento = '03/01/1983'
set @nacimiento = Dateadd(year,year(getdate())-year(@nacimiento),@nacimiento)
select
case when @nacimiento < getdate() then
    datediff(day,getdate(),Dateadd(year,1,@nacimiento))
else
    datediff(day,getdate(),@nacimiento)
end as dias_faltantes
nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila

Última edición por GeoAvila; 26/06/2008 a las 17:31
  #11 (permalink)  
Antiguo 26/06/2008, 18:43
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problemas con fechas

Perdona, no quise ofender, solo que me fue muy extraño ver una RESTA entre 2 fechas, no soy perfecto, sigo aprendiendo y bueno, solo una ultima observacion, TODOS o casi todos los motores de base de datos manejan el formato ANSI (yyyymmdd), para las fechas, simpre deberiamos (me incluyo) mannejar dicho formato, con esto ayudamos al motor a realizar conversiones que no son necesarias.

Tienes mis respetos, sin duda.

Saludos
  #12 (permalink)  
Antiguo 27/06/2008, 09:48
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Problemas con fechas

Cita:
Iniciado por iislas Ver Mensaje
Perdona, no quise ofender, solo que me fue muy extraño ver una RESTA entre 2 fechas, no soy perfecto, sigo aprendiendo y bueno, solo una ultima observacion, TODOS o casi todos los motores de base de datos manejan el formato ANSI (yyyymmdd), para las fechas, simpre deberiamos (me incluyo) mannejar dicho formato, con esto ayudamos al motor a realizar conversiones que no son necesarias.

Tienes mis respetos, sin duda.

Saludos
Gracias por el post de aclaración, con el respecto a formato ANSI, me ha pasado muchas veces que el motor de base de datos maneja ó está instalado en un formato que no es el ANSI, entonces, para fines de evitar comflictos con los servers regularmente acostumbro poner el dateformat, de lo contario por ejemplo si coloco mi código y una persona lo corre sin el dateformat no le funcionará, pero es cuestión de costumbre mía y para evitar problemas con los motores de base de datos y la forma en que han sido instalados..

pero si lo correcto es no hacer conversiones inecesarias, para optimizar el rendimiento.

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #13 (permalink)  
Antiguo 27/06/2008, 12:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problemas con fechas

GeoAvila

Sobre todo, en lo que mencionas, no estar "configurando" el manejo de las fechas para "x" o "n" usuario.

Y algo sumamente importante, el ETL (Exportacion e Importacion) de datos.

Si manejamos el formato ANSI (siempre), evitaremos muchos dolores de cabeza.

Saludos.
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 02:15.