Cómo hacer un select tomando en cuenta un rango de fechas?

11/01/2007 - 10:42 por Don Juan | Informe spam
Hola a todos
Tengo un campo DateTime y necesito hacer una selección de una fecha inicio a
una fecha final, estoy utilizando este código pero no funciona como debe:
Where (Convert(Char(10),T.Transac_DateTime,103) BETWEEN '01/01/2007' and
'11/01/2007')

Es decir, me salen fechas que datan aun de 2006. Debe haber algun método
para hacer esta selección sin tener que pasar a tipo char? Utilizo el
convert para tener solo el formado dd/MM/yyyy

Gracias de atemano.

Preguntas similare

Leer las respuestas

#6 Don Juan
12/01/2007 - 08:55 | Informe spam
Si, tengo dos variables de tipo @date1 y @date2 que las recupero desde VB.
Cómo puedo ejecutarlo desde el servidor?

Gracias

"Jose Mariano Alvarez"
escribió en el
mensaje news:
Estas pasandolo como parámetro de un SP?

Asegurate que se ejecute en el servidor.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Don Juan" wrote in message
news:%
gracias a todos, pero aún me queda una duda
Cuando lo ejecuto desde el SQL server funciona de maravilla, pero cuando
pongo el mismo código para desplegarlo en mi DataGridView (VB) no
funciona!
El error me dice:
.Net Framework Data Type: DateTime
Error Message: String was not recognized as a valid DataTime.
Visto que la columna Transac_DateTime es de tipo Datetime no reconoce el
formato '20070101' como fecha.
Cómo puedo remediar esto?
Gracias 1000.

"Miguel egea" escribió en el mensaje
news:%
Eso te matará el rendimiento, hazlo así
Where t.Transac_Datetime between '20070101' and '20070111', siempre que
hagas casting, hazlo de la parte fija, nunca de un campo o penalizarás
tremendamente el rendimiento.

Saludos

"Don Juan" wrote in message
news:
Hola a todos
Tengo un campo DateTime y necesito hacer una selección de una fecha
inicio a una fecha final, estoy utilizando este código pero no funciona
como debe:
Where (Convert(Char(10),T.Transac_DateTime,103) BETWEEN '01/01/2007'
and '11/01/2007')

Es decir, me salen fechas que datan aun de 2006. Debe haber algun
método para hacer esta selección sin tener que pasar a tipo char?
Utilizo el convert para tener solo el formado dd/MM/yyyy

Gracias de atemano.
















Respuesta Responder a este mensaje
#7 Jose Mariano Alvarez
15/01/2007 - 12:50 | Informe spam
Lo conveniente si tienes una aplicacion cliente es que los parametros entre
esa aplicacion y el SQL Server sean del tipo fecha y el SQL reciba fechas en
lugar de strings.
Esto significa que los parametros de entrada del Sored procedure deberian
ser datetime por ejemplo.
En ese caso no deberias tomar en cuenta la recomendacion que te hicimos (no
se aplica al cliente sino al servidor sql).
El formato de la fecha que usas .net o vb6 esta condicionado por
laconfiguracion regional del cliente en cuanto a su representacion mediante
strings y no por el SQL al cual le deberian llegar fechas en lugar de
strings.

Sugiero que preguntes en un foro de VB o .NET como manejar formatos fecha
en el cliente.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Don Juan" wrote in message
news:
Si, tengo dos variables de tipo @date1 y @date2 que las recupero desde VB.
Cómo puedo ejecutarlo desde el servidor?

Gracias

"Jose Mariano Alvarez"
escribió en el
mensaje news:
Estas pasandolo como parámetro de un SP?

Asegurate que se ejecute en el servidor.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Don Juan" wrote in message
news:%
gracias a todos, pero aún me queda una duda
Cuando lo ejecuto desde el SQL server funciona de maravilla, pero cuando
pongo el mismo código para desplegarlo en mi DataGridView (VB) no
funciona!
El error me dice:
.Net Framework Data Type: DateTime
Error Message: String was not recognized as a valid DataTime.
Visto que la columna Transac_DateTime es de tipo Datetime no reconoce el
formato '20070101' como fecha.
Cómo puedo remediar esto?
Gracias 1000.

"Miguel egea" escribió en el mensaje
news:%
Eso te matará el rendimiento, hazlo así
Where t.Transac_Datetime between '20070101' and '20070111', siempre
que hagas casting, hazlo de la parte fija, nunca de un campo o
penalizarás tremendamente el rendimiento.

Saludos

"Don Juan" wrote in message
news:
Hola a todos
Tengo un campo DateTime y necesito hacer una selección de una fecha
inicio a una fecha final, estoy utilizando este código pero no
funciona como debe:
Where (Convert(Char(10),T.Transac_DateTime,103) BETWEEN '01/01/2007'
and '11/01/2007')

Es decir, me salen fechas que datan aun de 2006. Debe haber algun
método para hacer esta selección sin tener que pasar a tipo char?
Utilizo el convert para tener solo el formado dd/MM/yyyy

Gracias de atemano.




















Respuesta Responder a este mensaje
#8 Don Juan
16/01/2007 - 08:39 | Informe spam
Muchas gracias, lo tengo más claro.

"Jose Mariano Alvarez"
escribió en el
mensaje news:
Lo conveniente si tienes una aplicacion cliente es que los parametros
entre esa aplicacion y el SQL Server sean del tipo fecha y el SQL reciba
fechas en lugar de strings.
Esto significa que los parametros de entrada del Sored procedure deberian
ser datetime por ejemplo.
En ese caso no deberias tomar en cuenta la recomendacion que te hicimos
(no se aplica al cliente sino al servidor sql).
El formato de la fecha que usas .net o vb6 esta condicionado por
laconfiguracion regional del cliente en cuanto a su representacion
mediante strings y no por el SQL al cual le deberian llegar fechas en
lugar de strings.

Sugiero que preguntes en un foro de VB o .NET como manejar formatos fecha
en el cliente.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Don Juan" wrote in message
news:
Si, tengo dos variables de tipo @date1 y @date2 que las recupero desde
VB.
Cómo puedo ejecutarlo desde el servidor?

Gracias

"Jose Mariano Alvarez"
escribió en el
mensaje news:
Estas pasandolo como parámetro de un SP?

Asegurate que se ejecute en el servidor.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Don Juan" wrote in message
news:%
gracias a todos, pero aún me queda una duda
Cuando lo ejecuto desde el SQL server funciona de maravilla, pero
cuando pongo el mismo código para desplegarlo en mi DataGridView (VB)
no funciona!
El error me dice:
.Net Framework Data Type: DateTime
Error Message: String was not recognized as a valid DataTime.
Visto que la columna Transac_DateTime es de tipo Datetime no reconoce
el formato '20070101' como fecha.
Cómo puedo remediar esto?
Gracias 1000.

"Miguel egea" escribió en el
mensaje news:%
Eso te matará el rendimiento, hazlo así
Where t.Transac_Datetime between '20070101' and '20070111', siempre
que hagas casting, hazlo de la parte fija, nunca de un campo o
penalizarás tremendamente el rendimiento.

Saludos

"Don Juan" wrote in message
news:
Hola a todos
Tengo un campo DateTime y necesito hacer una selección de una fecha
inicio a una fecha final, estoy utilizando este código pero no
funciona como debe:
Where (Convert(Char(10),T.Transac_DateTime,103) BETWEEN '01/01/2007'
and '11/01/2007')

Es decir, me salen fechas que datan aun de 2006. Debe haber algun
método para hacer esta selección sin tener que pasar a tipo char?
Utilizo el convert para tener solo el formado dd/MM/yyyy

Gracias de atemano.
























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