between entre fechas

16/11/2004 - 15:05 por ZyXpHrEeZ | Informe spam
hola a todos, necesito un favor enorme, ojala me puedan colaborar, esque
tengo que hacer un between entre dos fechas pero los campos en la BD de las
fechas no estan unidos, me explico no estan por ej. 2004/11/16, sino que
tiene un campo que se llama AÑO, otro ke se llama MES, y otro que se llama
DIA. los campos estan asi porque estoy sacando unos reportes de un programa
que tiene la BD de esa forma por lo tanto no la puedo cambiar, entonces seria
muy facil decir where FECHACAMPO between fecha1 and fecha2, pero no se como
lo haria ya que el campo de fecha como les dije esta separado. me pueden
colaborar con esto??,
muchas gracias por su colaboracion.

Preguntas similare

Leer las respuestas

#6 Javier Loria
16/11/2004 - 18:17 | Informe spam
Hola:
Si la tabla tiene gran cantidad de filas, es posible que sea mejor usar
no el : WHERE CAST( AS SMALLDATETIME) BETWEEN ... AND ...
Si la tabla tiene menos de 20,000 filas no me preocuparia. Si la tabla
tiene varios cientos de miles de filas, entonces debes buscar opciones.
Un vista indexada pareciera una alternativa de mejor desempeno en la
consulta, pero castigando la insercion/borrado/actualizacion de los datos.
En el caso de una vista indexada no podras usar CAST/CONVERT por no ser
deterministicas y eventualmente tendras problemas con cualquier funcion no
agregada (DATEADD?). Esto descarta las vistas :(
Otra solucion entonces seria entonces agregar una columna calculada a la
tabla. Como inmagino tienes codigo dependiende de dicha tabla podria crear
una Tabla Nueva con otro nombre, las mismas columnas y la columna calculada,
mover los datos esta tabla Nueva, borrar la Tabla Original y crear una Vista
con el nombre de la tabla original basada en la nueva tabla y sin la columna
calculada. Este cambio es transparente para la aplicacion, a exepcion de
tener que recompilar los procedimientos almacenados.
Sobre la columna calculada podras entonces crear un indice. Es un
embrollo pero funciona realmente bien.
Suerte,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"ZyXpHrEeZ" wrote in message
news:
javier primero que todo muchas gracias por responder. lo que te iba a
preguntar es si ese cast lo puedo utilizar en el where es decir
colocar.. where cast() between fecha 1 and fecha2?? y por el
rendimineto me imagino que si sera mas lento pero toca hacerlo asi porque


esa
BD la utiliza otro programa entonces no se puede modificar. de


nuevo
te doy las gracias hermano.

"Javier Loria" escribió:

> Hola:
> Puedes hacer una serio de CAST's para darle el formato:
> => > SELECT CAST(CAST(Ano AS VARCHAR(4)) +
> '/' +
> CAST(Mes AS VARCHAR(2)) +
> '/' +
> CAST(Dia AS VARCHAR(2)) AS SMALLDATETIME)
> => > Claro que puedes usarlo en un BETWEEN pero olvidate de los indices,


si
> la tabla es grande es rendimiento no sera bueno.
> Saludos,
>
>
> Javier Loria
> Costa Rica
> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
> que pueda ser copiado y pegado al Query Analizer.
> La version de SQL y Service Pack tambien ayuda
>
> "ZyXpHrEeZ" wrote in message
> news:
> > hola a todos, necesito un favor enorme, ojala me puedan colaborar,


esque
> > tengo que hacer un between entre dos fechas pero los campos en la BD


de
> las
> > fechas no estan unidos, me explico no estan por ej. 2004/11/16, sino


que
> > tiene un campo que se llama AÑO, otro ke se llama MES, y otro que se


llama
> > DIA. los campos estan asi porque estoy sacando unos reportes de un
> programa
> > que tiene la BD de esa forma por lo tanto no la puedo cambiar,


entonces
> seria
> > muy facil decir where FECHACAMPO between fecha1 and fecha2, pero no se
> como
> > lo haria ya que el campo de fecha como les dije esta separado. me


pueden
> > colaborar con esto??,
> > muchas gracias por su colaboracion.
>
>
>
Respuesta Responder a este mensaje
#7 Luis Ramírez
16/11/2004 - 20:01 | Informe spam
intenta crear una vista


"ZyXpHrEeZ" wrote in message
news:
hola a todos, necesito un favor enorme, ojala me puedan colaborar, esque
tengo que hacer un between entre dos fechas pero los campos en la BD de


las
fechas no estan unidos, me explico no estan por ej. 2004/11/16, sino que
tiene un campo que se llama AÑO, otro ke se llama MES, y otro que se llama
DIA. los campos estan asi porque estoy sacando unos reportes de un


programa
que tiene la BD de esa forma por lo tanto no la puedo cambiar, entonces


seria
muy facil decir where FECHACAMPO between fecha1 and fecha2, pero no se


como
lo haria ya que el campo de fecha como les dije esta separado. me pueden
colaborar con esto??,
muchas gracias por su colaboracion.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida