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

Comparacion fechas

Estas en el tema de Comparacion fechas en el foro de SQL Server en Foros del Web. Hola a todos, no se si ya exista un post como este, pero la verdad no encontré algo parecido, resulta que debo comparar dos fechas ...
  #1 (permalink)  
Antiguo 23/08/2010, 08:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 24
Antigüedad: 15 años, 1 mes
Puntos: 0
Comparacion fechas

Hola a todos, no se si ya exista un post como este, pero la verdad no encontré algo parecido, resulta que debo comparar dos fechas en sql, pero basándome en año de 360 días, es decir meses de 30 días, la función DATEDIFF me devuelve la diferencia pero no se si se pueda hacer algo para que me haga esa diferencia en meses de 30 días, es decir, supongamos:

2010-03-02 hasta 2010-06-30
con la función datediff me arroja 120 días, sin embargo, dado que el mes de abril tiene 31 días, no me sirve, y que debería mostrar 119, porke necesito que tome todos los meses de 30 días.

agradezco la colaboración.
  #2 (permalink)  
Antiguo 23/08/2010, 09:57
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: Comparacion fechas

Por pura logica, haga el DATEDIFF sobre los meses y multiplique por 30
  #3 (permalink)  
Antiguo 23/08/2010, 15:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Comparacion fechas

Haz de este codigo una funcion, pruebalo y haz los cambios que necesites:
Código SQL:
Ver original
  1. DECLARE @fch_ini datetime, @fch_fin datetime
  2. DECLARE @diasDif SMALLINT, @dias31 tinyint
  3.  
  4. SELECT @fch_ini = '20100302', @fch_fin = '20100630'
  5. SELECT @diasDif = datediff(d, LEFT(CONVERT(VARCHAR,@fch_ini,112),6) + '01',@fch_ini)
  6.  
  7. DECLARE @meses31 TABLE(mes tinyint)
  8. INSERT INTO @meses31
  9. SELECT 1 UNION
  10. SELECT 3 UNION
  11. SELECT 5 UNION
  12. SELECT 7 UNION
  13. SELECT 8 UNION
  14. SELECT 10 UNION
  15. SELECT 12
  16.  
  17. SELECT @dias31 = COUNT(1)
  18. FROM @meses31
  19. WHERE mes BETWEEN MONTH(@fch_ini) AND MONTH(@fch_fin)
  20.  
  21. SELECT datediff(d,@fch_ini, @fch_fin) - @dias31 + @diasDif
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: comparacion, fechas
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 14:49.