Comparar meses y años al mismo tiempo

20/05/2009 - 16:52 por RP | Informe spam
Hola que tal, bueno resulta que tengo a prueba una aplicación, y se me
presenta el siguiente problema, cuando necesito imprimir un rango de meses y
años no me sale el reporte tal y como lo deseo, mejor les explico con la
parte del código Where:

And ((month(c.fechliq) Between '01' And '12')

And (year(c.fechliq) Between '1997' And '2009'))

Esto era lo que originalmente use para imprimir el reporte entre el mes de
un año y el mes de otro año, pero cuando pongo algo como esto:

And ((month(c.fechliq) Between '01' And '05')

And (year(c.fechliq) Between '1997' And '2009'))

No me visualiza todos los datos, recortado sólo los del año '98 y del año
2009, pero si corre el primer where salen todos los datos.

Traducido al castellano, Como hago para que me corran los datos (Por
ejemplo) de enero de 1997 Hasta Mayo del 2009??

Agradezco de antemano la ayuda y sugerencias brindadas

Preguntas similare

Leer las respuestas

#1 Maxi
20/05/2009 - 17:18 | Informe spam
hola,
Primero la forma que lo esta haciendo no es eficiente porque esta utilizando
funciones del lado izquierdo, lo cual si tiene indices sobre esa columna no
seran usados de forma eficiente.

Para resolver su query es tan simple como

where c.fechliq >='19970101' and
c.fechliq < '20090601'

(incluido mayo)






Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"RP" escribió en el mensaje de
noticias:
Hola que tal, bueno resulta que tengo a prueba una aplicación, y se me
presenta el siguiente problema, cuando necesito imprimir un rango de meses
y
años no me sale el reporte tal y como lo deseo, mejor les explico con la
parte del código Where:

And ((month(c.fechliq) Between '01' And '12')

And (year(c.fechliq) Between '1997' And '2009'))

Esto era lo que originalmente use para imprimir el reporte entre el mes de
un año y el mes de otro año, pero cuando pongo algo como esto:

And ((month(c.fechliq) Between '01' And '05')

And (year(c.fechliq) Between '1997' And '2009'))

No me visualiza todos los datos, recortado sólo los del año '98 y del año
2009, pero si corre el primer where salen todos los datos.

Traducido al castellano, Como hago para que me corran los datos (Por
ejemplo) de enero de 1997 Hasta Mayo del 2009??

Agradezco de antemano la ayuda y sugerencias brindadas
Respuesta Responder a este mensaje
#2 Alejandro Mesa
20/05/2009 - 17:35 | Informe spam
RP,

Existen varias formas para hacer esto.

...
where c.fechliq >= '19970101' and c.fechliq < '20090601'


...
where (year(c.fechliq) * 100) + month(c.fechliq) between 199701 and 200905


La version 1 es la adecuada o preferible de usar porque no manipulamos la
columna que participa en el filtro, por lo que SQL Server podra usar las
estadisticas, en caso de existir un indice adecuado, para estimar la
selectividad de la expresion.


AMB

"RP" wrote:

Hola que tal, bueno resulta que tengo a prueba una aplicación, y se me
presenta el siguiente problema, cuando necesito imprimir un rango de meses y
años no me sale el reporte tal y como lo deseo, mejor les explico con la
parte del código Where:

And ((month(c.fechliq) Between '01' And '12')

And (year(c.fechliq) Between '1997' And '2009'))

Esto era lo que originalmente use para imprimir el reporte entre el mes de
un año y el mes de otro año, pero cuando pongo algo como esto:

And ((month(c.fechliq) Between '01' And '05')

And (year(c.fechliq) Between '1997' And '2009'))

No me visualiza todos los datos, recortado sólo los del año '98 y del año
2009, pero si corre el primer where salen todos los datos.

Traducido al castellano, Como hago para que me corran los datos (Por
ejemplo) de enero de 1997 Hasta Mayo del 2009??

Agradezco de antemano la ayuda y sugerencias brindadas
Respuesta Responder a este mensaje
#3 RP
20/05/2009 - 18:19 | Informe spam
Bueno, Gracias por los consejos, hice unos ajustes a la aplicación para que
me ingrese los datos a comparar de acuerdo a lo sugerido por uds. y quedo OK,
gracias por las sugerencias y respuestas

RP
Respuesta Responder a este mensaje
#4 GuilleSQL
20/05/2009 - 21:45 | Informe spam
Por si te sirve para alguna otra ocasión:

¿Cómo trabajar con Fechas en SQL Server?
http://www.guillesql.es/Articulos/S...echas.aspx

Saludos,
GuilleSQL
http://www.guillesql.es


"RP" wrote:

Hola que tal, bueno resulta que tengo a prueba una aplicación, y se me
presenta el siguiente problema, cuando necesito imprimir un rango de meses y
años no me sale el reporte tal y como lo deseo, mejor les explico con la
parte del código Where:

And ((month(c.fechliq) Between '01' And '12')

And (year(c.fechliq) Between '1997' And '2009'))

Esto era lo que originalmente use para imprimir el reporte entre el mes de
un año y el mes de otro año, pero cuando pongo algo como esto:

And ((month(c.fechliq) Between '01' And '05')

And (year(c.fechliq) Between '1997' And '2009'))

No me visualiza todos los datos, recortado sólo los del año '98 y del año
2009, pero si corre el primer where salen todos los datos.

Traducido al castellano, Como hago para que me corran los datos (Por
ejemplo) de enero de 1997 Hasta Mayo del 2009??

Agradezco de antemano la ayuda y sugerencias brindadas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida