Disculpen la burrada pero..

06/05/2006 - 01:40 por Lord Voldemort | Informe spam
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE Fecha>/01/2006
AND Fecha<1/12/2006 ????

saludos

Jairo

Preguntas similare

Leer las respuestas

#6 Antonio Ortiz
09/05/2006 - 18:41 | Informe spam
Gracias Miguel por tu aportacion, con anterioridad lei que se recomendaba el
uso de > y < contra Between en este foro. Siempre lo puse en duda.


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Miguel Egea" escribió en el mensaje
news:
Dan el mismo plan de ejecución, en el primero de los procesos de
interpretación de consultas normaliza ambas expresiones a lo mismo si no
me equivoco.

i
Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%

Gracias Miguel, me referia al estilo:

Fecha>=RangoMinimo and Fecha<=Maximo

contra:

Fecha Between Inicio and Fin

saludos,


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Miguel Egea" escribió en el mensaje
news:
Así es, en España no suena eso nada fuerte, más bien al contrario, suena
hasta de comentarion entre compañeros :),

No es bueno usar funciones de transformación sobre campos por que SQL es
posible que no apreveche los índices

Si escribimos esta función Select * from Facturas Where
Year(FechaFactura) 06, SQL Tendrá que leer todas las facturas calcular
el año y entonces comparar para ver si devuelve o no las filas. El
optimizador de consultas remueve algunos casos evidentes del tipo Where
FechaFactura+5='talfecha', pero por si acaso debemos intentar hacerle la
vida más fácil. Así pues usando beetween además de ser más genérico,
con una política adecuada de índices, también será más rápido.

Select * from Facturas where FechaFactura between '20060101' and
'20061231 23:59:59.999'

Creo que esta sería la forma más optima en mi opiníon de hacerlo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com



"Antonio Ortiz" escribió en el mensaje
news:

Aprovechando el hilo:

Hace tiempo se discutia si es mejor o definir el rango de esta manera o
el between, en lo particular yo acostumbro utilizar Between siempre que
me es posible por legibilidad y mi rendimiento no decae o al menos no
le he apreciado.

Que Opinas Maxi?


P.D. El tono es cuestion de cultura/regiones, lo que para ti pudiera
parecer una bromita o vocabulario normal, tal vez en mi region resulte
agresivo, en mi opinion deberias recordad eso siempre. Por aquí he
leido 'palabrotas' que aca (Mexico) son una vulgaridad o suenan
groseras pero supongo que son regionalismos asi que no les hago caso o
me dan risa.


Saludos,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Maxi [MVP]" escribió en el mensaje
news:
Hola, primero te diria que bajes aca un poco el tono, no es necesario
pedir las cosas asi.

Segundo, no te recomiendo ninguna de las 2 maneras, la primera no
usara los indices de forma eficiente si esa que los tiene ya que
aplicas una funcion a un campo, la segunda no respeta el formato ANSI

Tonces

Select campos from tabla
where fecha >='20060101' and fecha < '20070101'

bye


Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE
Fecha>/01/2006 AND Fecha<1/12/2006 ????

saludos

Jairo





















Respuesta Responder a este mensaje
#7 Miguel Egea
09/05/2006 - 22:03 | Informe spam
no me hagas mucho caso, pero creo que se lo pregunté al Product manager del
Query optimizer team solo por que me tocó dar una charla de interpretación
de planes de ejecución delante de él, y después aproveché para preguntar yo
:) y me dijo eso, de todas formas no lo recuerdo con claridad así que ponlo
en cuarentena, aunque apuesto 10 cervezas a que es así.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%23Ctf%

Gracias Miguel por tu aportacion, con anterioridad lei que se recomendaba
el uso de > y < contra Between en este foro. Siempre lo puse en duda.


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Miguel Egea" escribió en el mensaje
news:
Dan el mismo plan de ejecución, en el primero de los procesos de
interpretación de consultas normaliza ambas expresiones a lo mismo si no
me equivoco.

i
Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%

Gracias Miguel, me referia al estilo:

Fecha>=RangoMinimo and Fecha<=Maximo

contra:

Fecha Between Inicio and Fin

saludos,


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Miguel Egea" escribió en el mensaje
news:
Así es, en España no suena eso nada fuerte, más bien al contrario,
suena hasta de comentarion entre compañeros :),

No es bueno usar funciones de transformación sobre campos por que SQL
es posible que no apreveche los índices

Si escribimos esta función Select * from Facturas Where
Year(FechaFactura) 06, SQL Tendrá que leer todas las facturas
calcular el año y entonces comparar para ver si devuelve o no las
filas. El optimizador de consultas remueve algunos casos evidentes del
tipo Where FechaFactura+5='talfecha', pero por si acaso debemos
intentar hacerle la vida más fácil. Así pues usando beetween además
de ser más genérico, con una política adecuada de índices, también será
más rápido.

Select * from Facturas where FechaFactura between '20060101' and
'20061231 23:59:59.999'

Creo que esta sería la forma más optima en mi opiníon de hacerlo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma
completa de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com



"Antonio Ortiz" escribió en el mensaje
news:

Aprovechando el hilo:

Hace tiempo se discutia si es mejor o definir el rango de esta manera
o el between, en lo particular yo acostumbro utilizar Between siempre
que me es posible por legibilidad y mi rendimiento no decae o al menos
no le he apreciado.

Que Opinas Maxi?


P.D. El tono es cuestion de cultura/regiones, lo que para ti pudiera
parecer una bromita o vocabulario normal, tal vez en mi region resulte
agresivo, en mi opinion deberias recordad eso siempre. Por aquí he
leido 'palabrotas' que aca (Mexico) son una vulgaridad o suenan
groseras pero supongo que son regionalismos asi que no les hago caso o
me dan risa.


Saludos,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Maxi [MVP]" escribió en el mensaje
news:
Hola, primero te diria que bajes aca un poco el tono, no es necesario
pedir las cosas asi.

Segundo, no te recomiendo ninguna de las 2 maneras, la primera no
usara los indices de forma eficiente si esa que los tiene ya que
aplicas una funcion a un campo, la segunda no respeta el formato ANSI

Tonces

Select campos from tabla
where fecha >='20060101' and fecha < '20070101'

bye


Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE
Fecha>/01/2006 AND Fecha<1/12/2006 ????

saludos

Jairo

























Respuesta Responder a este mensaje
#8 Wilbert Jose Magaña Lopez
10/05/2006 - 16:04 | Informe spam
creo que puedes utilizar la instruccion between...es una opcion si das la
fecha finla e inicial..



"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE Fecha>/01/2006
AND Fecha<1/12/2006 ????

saludos

Jairo


Respuesta Responder a este mensaje
#9 Antonio Ortiz
10/05/2006 - 21:54 | Informe spam
jajaja, gracias


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Miguel Egea" escribió en el mensaje
news:
no me hagas mucho caso, pero creo que se lo pregunté al Product manager
del Query optimizer team solo por que me tocó dar una charla de
interpretación de planes de ejecución delante de él, y después aproveché
para preguntar yo :) y me dijo eso, de todas formas no lo recuerdo con
claridad así que ponlo en cuarentena, aunque apuesto 10 cervezas a que es
así.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%23Ctf%

Gracias Miguel por tu aportacion, con anterioridad lei que se recomendaba
el uso de > y < contra Between en este foro. Siempre lo puse en duda.


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Miguel Egea" escribió en el mensaje
news:
Dan el mismo plan de ejecución, en el primero de los procesos de
interpretación de consultas normaliza ambas expresiones a lo mismo si no
me equivoco.

i
Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%

Gracias Miguel, me referia al estilo:

Fecha>=RangoMinimo and Fecha<=Maximo

contra:

Fecha Between Inicio and Fin

saludos,


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Miguel Egea" escribió en el mensaje
news:
Así es, en España no suena eso nada fuerte, más bien al contrario,
suena hasta de comentarion entre compañeros :),

No es bueno usar funciones de transformación sobre campos por que SQL
es posible que no apreveche los índices

Si escribimos esta función Select * from Facturas Where
Year(FechaFactura) 06, SQL Tendrá que leer todas las facturas
calcular el año y entonces comparar para ver si devuelve o no las
filas. El optimizador de consultas remueve algunos casos evidentes del
tipo Where FechaFactura+5='talfecha', pero por si acaso debemos
intentar hacerle la vida más fácil. Así pues usando beetween además
de ser más genérico, con una política adecuada de índices, también
será más rápido.

Select * from Facturas where FechaFactura between '20060101' and
'20061231 23:59:59.999'

Creo que esta sería la forma más optima en mi opiníon de hacerlo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma
completa de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com



"Antonio Ortiz" escribió en el mensaje
news:

Aprovechando el hilo:

Hace tiempo se discutia si es mejor o definir el rango de esta manera
o el between, en lo particular yo acostumbro utilizar Between siempre
que me es posible por legibilidad y mi rendimiento no decae o al
menos no le he apreciado.

Que Opinas Maxi?


P.D. El tono es cuestion de cultura/regiones, lo que para ti pudiera
parecer una bromita o vocabulario normal, tal vez en mi region
resulte agresivo, en mi opinion deberias recordad eso siempre. Por
aquí he leido 'palabrotas' que aca (Mexico) son una vulgaridad o
suenan groseras pero supongo que son regionalismos asi que no les
hago caso o me dan risa.


Saludos,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Maxi [MVP]" escribió en el mensaje
news:
Hola, primero te diria que bajes aca un poco el tono, no es
necesario pedir las cosas asi.

Segundo, no te recomiendo ninguna de las 2 maneras, la primera no
usara los indices de forma eficiente si esa que los tiene ya que
aplicas una funcion a un campo, la segunda no respeta el formato
ANSI

Tonces

Select campos from tabla
where fecha >='20060101' and fecha < '20070101'

bye


Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE
Fecha>/01/2006 AND Fecha<1/12/2006 ????

saludos

Jairo





























Respuesta Responder a este mensaje
#10 Salvador Ramos
11/05/2006 - 22:48 | Informe spam
Hola,

Igual el problema lo tienes en si llevas almacenada una hora distinta de la
0:00 puedes tener problemas si quieres las filas entre dos fechas, por
ejemplo del 1 a l 15 de enero
Con Fecha Between '20060101' and '20060115' estarías perdiendo las filas del
15 de enero con hora posterior a las 0:00, por eso a veces habrás visto
soluciones propuestas como
Fecha >= '20060101' and Fecha < '20060116', y cosas similares. Eso a veces
puede llevar al ese equívoco.

Con la solución que te da Miguel al incluir la hora en el between que te
propone, no tendría ese problema.

Pd. Yo apuesto otras 10 a que el rendimiento es el mismo :-)

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Antonio Ortiz" escribió en el mensaje
news:%23Ctf%

Gracias Miguel por tu aportacion, con anterioridad lei que se recomendaba
el uso de > y < contra Between en este foro. Siempre lo puse en duda.


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Miguel Egea" escribió en el mensaje
news:
Dan el mismo plan de ejecución, en el primero de los procesos de
interpretación de consultas normaliza ambas expresiones a lo mismo si no
me equivoco.

i
Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Antonio Ortiz" escribió en el mensaje
news:%

Gracias Miguel, me referia al estilo:

Fecha>=RangoMinimo and Fecha<=Maximo

contra:

Fecha Between Inicio and Fin

saludos,


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Miguel Egea" escribió en el mensaje
news:
Así es, en España no suena eso nada fuerte, más bien al contrario,
suena hasta de comentarion entre compañeros :),

No es bueno usar funciones de transformación sobre campos por que SQL
es posible que no apreveche los índices

Si escribimos esta función Select * from Facturas Where
Year(FechaFactura) 06, SQL Tendrá que leer todas las facturas
calcular el año y entonces comparar para ver si devuelve o no las
filas. El optimizador de consultas remueve algunos casos evidentes del
tipo Where FechaFactura+5='talfecha', pero por si acaso debemos
intentar hacerle la vida más fácil. Así pues usando beetween además
de ser más genérico, con una política adecuada de índices, también será
más rápido.

Select * from Facturas where FechaFactura between '20060101' and
'20061231 23:59:59.999'

Creo que esta sería la forma más optima en mi opiníon de hacerlo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma
completa de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com



"Antonio Ortiz" escribió en el mensaje
news:

Aprovechando el hilo:

Hace tiempo se discutia si es mejor o definir el rango de esta manera
o el between, en lo particular yo acostumbro utilizar Between siempre
que me es posible por legibilidad y mi rendimiento no decae o al menos
no le he apreciado.

Que Opinas Maxi?


P.D. El tono es cuestion de cultura/regiones, lo que para ti pudiera
parecer una bromita o vocabulario normal, tal vez en mi region resulte
agresivo, en mi opinion deberias recordad eso siempre. Por aquí he
leido 'palabrotas' que aca (Mexico) son una vulgaridad o suenan
groseras pero supongo que son regionalismos asi que no les hago caso o
me dan risa.


Saludos,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



"Maxi [MVP]" escribió en el mensaje
news:
Hola, primero te diria que bajes aca un poco el tono, no es necesario
pedir las cosas asi.

Segundo, no te recomiendo ninguna de las 2 maneras, la primera no
usara los indices de forma eficiente si esa que los tiene ya que
aplicas una funcion a un campo, la segunda no respeta el formato ANSI

Tonces

Select campos from tabla
where fecha >='20060101' and fecha < '20070101'

bye


Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
Como carajos traigo los datos de todo un año..

Select From WHERE IN Year(2006)
o esto no se puede asi y tendre que hacerlo con el WHERE
Fecha>/01/2006 AND Fecha<1/12/2006 ????

saludos

Jairo

























Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida