SQL Server - generar todos los dias del mes

 
Vista:

generar todos los dias del mes

Publicado por mlx (12 intervenciones) el 23/03/2009 23:22:50
hola a todos;
alguien me puede ayudar necesito mostrar todos los dias del mes dependiendo de un parametro que le paso en este caso el parametro es del mes.
cuando le pase el mes, me muestre todos los dias de ese mes. como lo puedo hacer??
necesito mostrarla de esta manera

ejemplo
01/03/2009
02/03/2009
... asi hasta 31/03/2009

es imprimir todos los dias del mes dependiendo del parametro mes que se le pase
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:generar todos los dias del mes

Publicado por Isaias (4558 intervenciones) el 24/03/2009 02:54:11
Bueno, Mau te hizo una funcion que te hace obtener el ULTIMO DIA DEL MES, la parte mas dificil de lo que deseas hacer, ¿No te sirvio dicha funcion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar todos los dias del mes

Publicado por NECO (1 intervención) el 17/06/2009 23:45:55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Select dt_val from (
–Matriz cruzada de valores numericos
select
dateadd(dd, value, dateadd(month, 8 – 1, dateadd(year, 2008 – 1900, ‘1900.01.01 00:00:00.000′))) as dt_val
from(
select (v2 * 4 + v1) * 4 + v0 as value from
(select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join
(select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join
(select 0 as v2 union select 1 union select 2 union select 3) as rs2
) as rs
–fin de matriz
) as rs2
 
where month(dt_val) = 8
order by dt_val

ESPERO TE SIRVA, SUERTE !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

RE:generar todos los dias del mes

Publicado por Armando (1 intervención) el 02/09/2014 20:04:28
Muy interesante query gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

RE:generar todos los dias del mes

Publicado por Ivan (1 intervención) el 28/09/2015 08:13:52
Excelente aporte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar todos los dias del mes

Publicado por Miguel Angel (1 intervención) el 24/10/2017 01:59:08
Podrias explicar tu lógica por favor porque quiero obtener todos los dias el año.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 3
Ha aumentado su posición en 6 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:generar todos los dias del mes

Publicado por Diego (1 intervención) el 05/10/2018 19:02:26
Yo arme esta vista y genera todos los dias de un año, en este caso el año 2018, a partir de aca se puede hacer todo lo que te imagines con fechas.-

CODIGO:

create view vista_que_muestra_fechas_corridas_organizadas_por_meses as


Select dt_val from (
-- enero
select (dateadd(dd, value, dateadd(month,
1 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
1 --***** Modificar el mes

union

Select dt_val from (
-- febrero
select (dateadd(dd, value, dateadd(month,
2 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
2 --***** Modificar el mes

union

Select dt_val from (
-- marzo
select (dateadd(dd, value, dateadd(month,
3 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
3 --***** Modificar el mes

union

Select dt_val from (
-- abril
select (dateadd(dd, value, dateadd(month,
4 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
4 --***** Modificar el mes

union

Select dt_val from (
-- mayo
select (dateadd(dd, value, dateadd(month,
5 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
5 --***** Modificar el mes


union

Select dt_val from (
-- junio
select (dateadd(dd, value, dateadd(month,
6 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
6 --***** Modificar el mes


union

Select dt_val from (
-- julio
select (dateadd(dd, value, dateadd(month,
7 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
7 --***** Modificar el mes

union

Select dt_val from (
-- agosto
select (dateadd(dd, value, dateadd(month,
8 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
8 --***** Modificar el mes

union

Select dt_val from (
-- septiembre
select (dateadd(dd, value, dateadd(month,
9 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
9 --***** Modificar el mes

union

Select dt_val from (
-- octubre
select (dateadd(dd, value, dateadd(month,
10 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
10 --***** Modificar el mes

union

Select dt_val from (
-- noviembre
select (dateadd(dd, value, dateadd(month,
11 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
11 --***** Modificar el mes

union

Select dt_val from (
-- diciembre
select (dateadd(dd, value, dateadd(month,
12 - --***** Modificar el mes
1, dateadd(year,
2018 --***** Modificar el AÑO
- 1900, '1900.01.01')))) as dt_val from( select (v2 * 4 + v1) * 4 + v0 as value from (select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join (select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join (select 0 as v2 union select 1 union select 2 union select 3) as rs2 ) as rs ) as rs2 where
month(dt_val) =
12 --***** Modificar el mes

union .... etcetera . aca repetis todo nuevamente haciendo tanta cantidad de años como quieras, el año lo "fabricas" en la fila que dice:
2018 --***** Modificar el AÑO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar todos los dias del mes

Publicado por Miguel Rocha (1 intervención) el 05/12/2018 01:05:46
Hola.
Podrías crear un query que construya todas las fechas a partir de una muy específica(fecha origen), la cual puedes indicar al restar o sumar días a la fecha actual.
Por ejemplo:
1
2
3
4
El día de hoy:
    04-12-2018
menos 33 días atras:
    01-11-2018 -->Esta será tu fecha origen (Suponiendo que quieres obtener todos los días de Noviembre de 2018)
Después, en un ciclo imprimes o guardas el resultado de aumentar día a día los que restaste para obtener tu fecha de origen:

1
2
3
4
5
6
declare @nWhile int = 33
while (@nWhile >0)
	begin
		select convert(datetime, convert(date, getdate()-@nWhile))
		set @nWhile = @nWhile - 1
	end

y listo.
solo los seleccionas cuando los necesites.
(Puedes restar o sumar días a tu fecha origen para obtener las fechas deseadas)
Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar todos los dias del mes

Publicado por Alexander Ochoa (1 intervención) el 12/05/2020 18:58:42
Buenos días,

una pregunta, qué pena la ignorancia, pero quisiera saber cómo seleccionar todos los valores generados por este método:

1
2
3
4
5
6
declare @nWhile int = 33
while (@nWhile >0)
begin
select convert(datetime, convert(date, getdate()-@nWhile))
set @nWhile = @nWhile - 1
end

y así poderlos utilizar dentro de otra consulta. Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar todos los dias del mes

Publicado por Diego (1 intervención) el 09/01/2020 17:58:36
esta bueno tu query, lo hubieras optimizado usando un while asi haces menos codigo, por lo demas, esta perfecto el resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

generar todos los dias del mes

Publicado por Oscar (1 intervención) el 02/09/2021 03:13:17
Con esta consulta pones fecha inicio y fecha fin y obtienes todos los días, por ejemplo para obtener todos los días del año 2021

SELECT DATEADD(Day,Number,'20210101')
FROM master..spt_values fechas
WHERE Type='P'
AND DATEADD(day,Number,'20210101') <= '20211231'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar