Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/02/2013, 13:58
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 5 meses
Puntos: 774
Respuesta: Calcular días de un mes incluidos entre dos fechas

un poco rebuscado:

Código SQL:
Ver original
  1. CREATE TABLE #temp1(
  2. dias datetime
  3. )
  4.  
  5. CREATE TABLE #temp2(
  6. dias datetime
  7. )
  8.  
  9. DECLARE @inicio VARCHAR(20)
  10. DECLARE @fin VARCHAR(20)
  11. DECLARE @fecha_inicio VARCHAR(20)
  12. DECLARE @mes_valida INT
  13. DECLARE @x INT
  14. DECLARE @mes INT
  15. DECLARE @año INT
  16.  
  17. SET @inicio='2012-01'
  18. SET @x=1
  19. SET @mes_valida=DATEPART(mm,CONVERT(datetime,@inicio + '-01'))
  20. SET @año=DATEPART(yyyy,CONVERT(datetime,@inicio + '-01'))
  21. while @x<=31
  22. BEGIN
  23. SELECT @fecha_inicio=CONVERT(datetime,(CONVERT(VARCHAR(20),@año) + '-' + CONVERT(VARCHAR(2),@x) + '-' + CONVERT(VARCHAR(20),@mes_valida))) 
  24. IF (DATEPART(mm,@fecha_inicio) = @mes_valida)
  25. BEGIN
  26.    INSERT INTO #temp1 VALUES (@fecha_inicio)  
  27. END  
  28. SET @x=@x+1
  29. END
  30.  
  31.  
  32. DECLARE @desde datetime
  33. DECLARE @hasta datetime
  34. SET @desde=CONVERT(datetime,'2010-05-12')
  35. SET @hasta=CONVERT(datetime,'2013-30-01')
  36. SET @x=0
  37.  
  38. while @x<=datediff(dd,@desde,@hasta)
  39. BEGIN
  40. INSERT INTO #temp2 VALUES (dateadd(dd,@x,@desde))
  41. SET @x=@x+1
  42. END
  43.  
  44. SELECT COUNT(*) dias FROM #temp2 WHERE dias IN (SELECT * FROM #temp1)
  45.  
  46. DELETE FROM #temp1
  47. DELETE FROM #temp2

pero regresa lo que necesitas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me