Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Escapar palabras Reservadas SQL

Estas en el tema de Escapar palabras Reservadas SQL en el foro de SQL Server en Foros del Web. Buenas Noches Compañeros..... SELECT * FROM venVentas vVentas WHERE vVentas.Fecha ='2011-26-05 00:00:00.000' AND vVentas.Plan = '1236' Como puedo escapar de la palabra reservada Plan, pues ...
  #1 (permalink)  
Antiguo 24/06/2011, 20:52
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 1 mes
Puntos: 76
Escapar palabras Reservadas SQL

Buenas Noches

Compañeros.....

SELECT * FROM venVentas vVentas
WHERE vVentas.Fecha ='2011-26-05 00:00:00.000'
AND vVentas.Plan = '1236'



Como puedo escapar de la palabra reservada Plan, pues tengo un campo que se llama asi pero no me deja validar porque lo toma como una palabra reservada....
Intente colocando entre comillas 'vVentas.Plan' ..... pero la consulta no me arroja nada o no funciona...

Gracias...

  #2 (permalink)  
Antiguo 24/06/2011, 20:58
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 1 mes
Puntos: 76
Respuesta: Escapar palabras Reservadas SQL

Listo amigo ya lo solucione

Nada mas dentro de corchetes meti el campo asi:

vVentas.[Plan]

Gracias.
  #3 (permalink)  
Antiguo 27/06/2011, 09:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 11 meses
Puntos: 180
Respuesta: Escapar palabras Reservadas SQL

Recuerda que las fechas NUNCA se comparan con IGUAL (=)
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 28/06/2011, 17:49
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 7 meses
Puntos: 85
Respuesta: Escapar palabras Reservadas SQL

Cita:
Iniciado por iislas Ver Mensaje
Recuerda que las fechas NUNCA se comparan con IGUAL (=)
¿Por qué ves incorrecto comparar fechas con (=)?

Saludos
  #5 (permalink)  
Antiguo 28/06/2011, 22:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 11 meses
Puntos: 180
Respuesta: Escapar palabras Reservadas SQL

No olvidemos que las fechas estan compuestas por AÑO-MES-DIA HORA-MINUTO-SEGUNDO-MILISEGUNDO.

¿Entonces que pasa si la comparacion no da exactamente con la fecha puesta (como en este caso)?

Por otro lado, ya hemos platicado extensamente sobre el tema de las fechas en ANSI (yyyymmdd) y su comparacion con >= y <=, que son de mayor velocidad en respuesta.
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 01/07/2011, 16:56
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 7 meses
Puntos: 85
Respuesta: Escapar palabras Reservadas SQL

Bien, ahora te entiendo, te refieres a no esperar que la consulta te devuelva los registros de todo un día al comparar campo_fecha='2011-26-05 00:00:00.000' si se tienen guardado valores con una presición mayor, no es que el operador (=) sea ilegal en las fechas, el tema es contemplar que el tipo datetime tambien puede almacenar hora-minutos-segundos-milisegundos y hay tenerlo en cuenta al momento de comparar fechas.

En cualquier caso, una forma rápida de tener presición año-mes-dia es con

Código:
select dateadd(dd,0, datediff(dd,0, campo_fecha))
Pero como bien decías, si campo_fecha tiene un índice, es mucho más efeciente el between.

Saludos
  #7 (permalink)  
Antiguo 01/07/2011, 17:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 11 meses
Puntos: 180
Respuesta: Escapar palabras Reservadas SQL

No, BETWEEN, tampo debe utilizarse para comparar fechas, insisto, debe ser con:

>= Y <=

Y siempre con el formato ANSI (yyyymmdd)

-- Ejemplo:

WHERE myCampoFecha >= '20110101' AND
myCampoFecha <= '20110228'
__________________
MCTS Isaias Islas

Etiquetas: escapar, palabras, reservadas, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:16.