todas rango operaciones obtener meses mayor las generar fechas entre dias consultar consulta con comparar calcular años sql-server stored-procedures

sql-server - rango - operaciones con fechas sql



Cómo listar todas las fechas entre dos fechas (5)

Cree un procedimiento almacenado que haga algo como lo siguiente:

declare @startDate date; declare @endDate date; select @startDate = ''20150528''; select @endDate = ''20150531''; with dateRange as ( select dt = dateadd(dd, 1, @startDate) where dateadd(dd, 1, @startDate) < @endDate union all select dateadd(dd, 1, dt) from dateRange where dateadd(dd, 1, dt) < @endDate ) select * from dateRange

SQL Fiddle con demo .

O mejor aún, cree una tabla de calendario y simplemente seleccione de eso.

Esta pregunta ya tiene una respuesta aquí:

Me gustaría listar fechas entre dos fechas en un procedimiento almacenado de SQL Server.

Por ejemplo:

Date1: 2015-05-28 Date2: 2015-05-31

Resultados:

2015-05-29 2015-05-30

¿Cómo calcular todas las fechas entre dos fechas dadas?

Saludos,



Puedes crear un procedimiento almacenado pasando 2 fechas.

CREATE PROCEDURE SELECTALLDATES ( @StartDate as date, @EndDate as date ) AS Declare @Current as date = DATEADD(DD, 1, @BeginDate); Create table #tmpDates (displayDate date) WHILE @Current < @EndDate BEGIN insert into #tmpDates VALUES(@Current); set @Current = DATEADD(DD, 1, @Current) -- add 1 to current day END Select * from #tmpDates drop table #tmpDates


Puedes usar una tabla de números:

DECLARE @Date1 DATE, @Date2 DATE SET @Date1 = ''20150528'' SET @Date2 = ''20150531'' SELECT DATEADD(DAY,number+1,@Date1) [Date] FROM master..spt_values WHERE type = ''P'' AND DATEADD(DAY,number+1,@Date1) < @Date2

Resultados:

╔════════════╗ ║ Date ║ ╠════════════╣ ║ 2015-05-29 ║ ║ 2015-05-30 ║ ╚════════════╝


Utilizar esta,

DECLARE @start_date DATETIME = ''2015-02-12 00:00:00.000''; DECLARE @end_date DATETIME = ''2015-02-13 00:00:00.000''; WITH AllDays AS ( SELECT @start_date AS [Date], 1 AS [level] UNION ALL SELECT DATEADD(DAY, 1, [Date]), [level] + 1 FROM AllDays WHERE [Date] < @end_date ) SELECT [Date], [level] FROM AllDays OPTION (MAXRECURSION 0)

pase los parámetros @start_date y @end_date como parámetros SP.

Resultado:

Date level ----------------------- ----------- 2015-02-12 00:00:00.000 1 2015-02-13 00:00:00.000 2 (2 row(s) affected)