Consulta Simple

01/10/2004 - 15:49 por MasterNet | Informe spam
Hola, la consulta es la siguiente:

En una tabla de SQL Server tengo guardada la fecha, ahora en una consulta
SELECT como podría sacar todos los registros de un determinado mes, tomando
encuenta que en el formulario solo me darán como parámetro el mes, por
ejemplo
septiembre y el año 2004. Pero no una fecha Inicio y una Fecha fin que sería
lo ideal.


Creo que sería algo así:

SELECT * FROM Tabla
WHERE Fecha > AND Fecha <

El problema en cuestión creo que sería definir a partir del mes y el año la
fecha Inicio y fecha Fin para hacer la consulta, pero debe funcionar
automáticamente para todas las opciones posibles. Por ejemplo si es
septiembre y 2004 y yo se que septiembre tiene 30 días entonces la Fecha
Inicio sería: 01/09/2004 a 30/09/2004.

Entonces qué código sería genérico para todas las opciones. O existe otra
forma más fácil.

Preguntas similare

Leer las respuestas

#6 Miguel Egea
01/10/2004 - 19:44 | Informe spam
Estoy de acuerdo contigo, el mont no es una buena opción por rendimiento
Lo más sencillo es basarse siempre en los días 1 y restar un dia, el ultimo
dia de un mes siempre es el anterior del primero del otro y cuando restas un
número a una fecha resta dias!


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?



"Manuel Etcheto" escribió en el
mensaje news:
Hola
La función MONTH te va a hacer escanear toda la tabla...
Tendrías que definir las fechas antes para poder comparar por fecha y
aprovechar un índice,
Algo como
CREATE PROCEDURE dbo.VerRegistrosPorMes
(@anyo smallint, @mes tinyint) AS
BEGIN
SET NOCOUNT ON
DECLARE @inicio datetime, @fin datetime
SELECT @inicio =CONVERT(datetime, CAST(@anyo as char(4)) +
RIGHT('0' + CAST(@mes as varchar(2)),2) + '01', 112) ,
@fin = DATEADD(mm, 1, @inicio)

SELECT campos FROM Tabla WHERE fecha >= @inicio AND fecha < @fin

Suerte
Manuel


MasterNet escribió en el mensaje de noticias
#E$
> Ok, Gracias. Ya investigué un poco, y con esa función MONTH ya resuelvo


mi
> problema.
>
>


Respuesta Responder a este mensaje
#7 Manuel Etcheto
01/10/2004 - 20:50 | Informe spam
Sip, yo en lugar de restarle lo que hago es < el primer día del mes
siguiente a las 0,
puede ser un milisegundo pero es del mes anterior...

Salu2
Manuel

Miguel Egea escribió en el mensaje de
noticias Oo$
Estoy de acuerdo contigo, el mont no es una buena opción por rendimiento
Lo más sencillo es basarse siempre en los días 1 y restar un dia, el


ultimo
dia de un mes siempre es el anterior del primero del otro y cuando restas


un
número a una fecha resta dias!


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?



"Manuel Etcheto" escribió en


el
mensaje news:
> Hola
> La función MONTH te va a hacer escanear toda la tabla...
> Tendrías que definir las fechas antes para poder comparar por fecha y
> aprovechar un índice,
> Algo como
> CREATE PROCEDURE dbo.VerRegistrosPorMes
> (@anyo smallint, @mes tinyint) AS
> BEGIN
> SET NOCOUNT ON
> DECLARE @inicio datetime, @fin datetime
> SELECT @inicio =CONVERT(datetime, CAST(@anyo as char(4)) +
> RIGHT('0' + CAST(@mes as varchar(2)),2) + '01', 112) ,
> @fin = DATEADD(mm, 1, @inicio)
>
> SELECT campos FROM Tabla WHERE fecha >= @inicio AND fecha < @fin
>
> Suerte
> Manuel
>
>
> MasterNet escribió en el mensaje de noticias
> #E$
> > Ok, Gracias. Ya investigué un poco, y con esa función MONTH ya


resuelvo
mi
> > problema.
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida