Y Seguimos con las Fechas

30/12/2003 - 13:38 por RICARDO URIBE | Informe spam
Bueno ahora tengo un campo en donde guardo fechas y horas, pero cuando hago
una conuslta solo la hago por fechas
Por ejemplo:

SELECT * FROM Cotizaciones WHERE FechaEmision='" & dtpFechaEmision.Value
& "'"

Se que ahi no me va a devolver datos porque en los campos tambien hay horas,
por eso quisiera saber si se puede usar algo como el LIKE
para comparar solo con la fecha y no con la hora.

Gracias por su ayuda.

Tengan un Feliz Año Nuevo.

Preguntas similare

Leer las respuestas

#6 Maximiliano Damian Accotto
30/12/2003 - 17:58 | Informe spam
Gracias por el articulo, muy interesante de por si

Salu2

Maximiliano Damian Accotto


"Miguel Egea" escribió en el mensaje
news:
jeje no me pongo celoso de salva nunca ;-)

Bueno en cualquier caso si que hay algo que gustaría comentar, los cast y
converts NO es bueno hacerlos en campos siempre que se pueda evitar, sí es
recomendable hacerlo en constantes, simplemente es una cuestión de
rendimiento veamos :

CASO 1_
select * From orders where orderdate='19960704'

(1 filas afectadas)

StmtText
|--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Orders]))
|--Index Seek(OBJECT:([Northwind].[dbo].[Orders].[OrderDate]),
SEEK:([Orders].[OrderDate]=Convert([@1])) ORDERED FORWARD)


CASO 2

tmtText
select * From orders where


convert(varchar(10),orderdate,102)='1996.07.04'

(1 filas afectadas)

StmtText
|--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Orders]))
|--Index Scan(OBJECT:([Northwind].[dbo].[Orders].[OrderDate]),
WHERE:(Convert([Orders].[OrderDate])='1996.07.04'))


CONCLUSIONES

Si SQL tiene que recorrerse todo el índice podemos estar ante un problema
grande de rendimiento, (ni que hablar de bloqueos dependiendo del nivel de
aislamiento), estamos impidiendo al optimizador de consultas usar índices


y
eso puede ser tremendamente negativo en nuestras aplicaciones.


FELIZ AÑO NUEVO y perdón por el coñazo de mensaje.
=> Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad



http://www.microsoft.com/spain/tech...9-USER.asp
==>


"Maximiliano Damian Accotto" <maxi_accotto[arroba]speedy.com.ar.SACAME>
escribió en el mensaje news:%
> ;)
>
> El tema de las fechas es un lio si no estas acostumbrado, te paso este
link
> donde hay un hermoso articulo de como manejarlas
>
> http://www.helpdna.net/bosqlfaq05.htm
>
> tambien para que no se me ponga celoso Miguel ;) tenes su Web
> http://www.portalsql.com/
>
> donde en la parte de busqueda pones Fechas y veras varios articulos, el
> primero es sobre Where con fechas (muy interesante de verdad)
>
> salu2
>
>
>
> Maximiliano Damian Accotto
>
>
> "RICARDO URIBE" escribió en el mensaje
> news:%
> > Otra vez me salvaste, gracias.
> >
> >
> > "Maximiliano Damian Accotto"


<maxi_accotto[arroba]speedy.com.ar.SACAME>
> > escribió en el mensaje news:
> > > hola Ricardo.
> > >
> > > Mira creo que este ejemplo te podria ser util
> > >
> > > SELECT * FROM INVENTORY_TRANS WHERE
CONVERT(VARCHAR(10),CREATE_DATE,102)
> > > > > '2003.12.01'
> > >
> > > donde dice: Inventory_trans pone tu tabla
> > > donde dice: Create_date pone tu campo
> > >
> > > ademas de esto en estas paginas encontraras todo lo necesario para
> > trabajar
> > > bien con las fechas.
> > >
> > > www.helpdna.net
> > >
> > > www.portalsql.com
> > >
> > > salu2
> > >
> > > Maximiliano Damian Accotto
> > >
> > >
> > > "RICARDO URIBE" escribió en el mensaje
> > > news:
> > > > Bueno ahora tengo un campo en donde guardo fechas y horas, pero
cuando
> > > hago
> > > > una conuslta solo la hago por fechas
> > > > Por ejemplo:
> > > >
> > > > SELECT * FROM Cotizaciones WHERE FechaEmision='" &
> > > dtpFechaEmision.Value
> > > > & "'"
> > > >
> > > > Se que ahi no me va a devolver datos porque en los campos tambien
hay
> > > horas,
> > > > por eso quisiera saber si se puede usar algo como el LIKE
> > > > para comparar solo con la fecha y no con la hora.
> > > >
> > > > Gracias por su ayuda.
> > > >
> > > > Tengan un Feliz Año Nuevo.
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Adrian Garcia
30/12/2003 - 20:58 | Informe spam
Una pregunta,
Tienes un indice sobre la columna fecha? si es asi entonces SQL Server no lo
utilizaria ya que estas aplicando una funcion de conversion a la columna.

Una opcion es utilizar el BETWEEN, por ejemplo

CREATE_DATE BETWEEN CONVERT(DATETIME, '2003.12.01 00:00:00') AND
CONVERT(DATETIME, '2003.12.01 23:59:59')

En este caso la funcion de conversión se ejecuta una sola vez y no por cada
fila (mejor performance) y al mismo tiempo si tienes definido un indice
sobre el campo le das la chance a que el motor pueda seleccionarlo en la
resolucion de la consulta.

Saludos

Adrian D. Garcia
NDsoft


"Maximiliano Damian Accotto" <maxi_accotto[arroba]speedy.com.ar.SACAME>
wrote in message news:
hola Ricardo.

Mira creo que este ejemplo te podria ser util

SELECT * FROM INVENTORY_TRANS WHERE CONVERT(VARCHAR(10),CREATE_DATE,102) > '2003.12.01'

donde dice: Inventory_trans pone tu tabla
donde dice: Create_date pone tu campo

ademas de esto en estas paginas encontraras todo lo necesario para


trabajar
bien con las fechas.

www.helpdna.net

www.portalsql.com

salu2

Maximiliano Damian Accotto


"RICARDO URIBE" escribió en el mensaje
news:
> Bueno ahora tengo un campo en donde guardo fechas y horas, pero cuando
hago
> una conuslta solo la hago por fechas
> Por ejemplo:
>
> SELECT * FROM Cotizaciones WHERE FechaEmision='" &
dtpFechaEmision.Value
> & "'"
>
> Se que ahi no me va a devolver datos porque en los campos tambien hay
horas,
> por eso quisiera saber si se puede usar algo como el LIKE
> para comparar solo con la fecha y no con la hora.
>
> Gracias por su ayuda.
>
> Tengan un Feliz Año Nuevo.
>
>


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