Problema con query

10/07/2006 - 18:45 por Oswaldo | Informe spam
Hola a todos, tengo el sgte qury

SELECT DISTINCT top 2 dsc_tituloaviso, dsc_textoaviso, dsc_fotovineta,
est_fotovineta,
dsc_fotoweb, est_fotoweb, ad_number,fecha_final FROM avisos
WHERE cod_subseccion='101' AND cod_departamento ='1'
and (fecha_final is not null or fecha_final<>'')
AND CONVERT(datetime,fecha_final,103)>=getdate()

El campo fecha_final es un char de 10 y las fechas que guarda ahí son del
tipo dd/mm/yyyy. Me sale el sgte error:

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value.

Alguien sabe como puedo solucionar este problema?

Saludos y gracias

Preguntas similare

Leer las respuestas

#1 Oswaldo
10/07/2006 - 20:03 | Informe spam
Primero que nada; cual es la razón por la cual guardas la fecha como texto en
vez de como fecha? esto te va a traer un montón de problemas, empezando por
la rigidez al insertar datos y las versiones de SQL Server.
Como recomendación personal cambia el timo de dato a DateTime y para evitar
problemas al insertar, actualizar o consultar utiliza la forma ansi
(aaaammdd) al mandar los datos desde el frente de la aplicación
Saludos!

"Oswaldo" wrote:

Hola a todos, tengo el sgte qury

SELECT DISTINCT top 2 dsc_tituloaviso, dsc_textoaviso, dsc_fotovineta,
est_fotovineta,
dsc_fotoweb, est_fotoweb, ad_number,fecha_final FROM avisos
WHERE cod_subseccion='101' AND cod_departamento ='1'
and (fecha_final is not null or fecha_final<>'')
AND CONVERT(datetime,fecha_final,103)>=getdate()

El campo fecha_final es un char de 10 y las fechas que guarda ahí son del
tipo dd/mm/yyyy. Me sale el sgte error:

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value.

Alguien sabe como puedo solucionar este problema?

Saludos y gracias
Respuesta Responder a este mensaje
#2 Jorge Gonzalez
10/07/2006 - 22:04 | Informe spam
Oswaldo,

No es lo más adecuado almacenar fechas ni horas en varchar ni en char. En
general acarrean problemas.
El problema en tu consulta es que el servidor que la está ejecutando está
interpretando los meses como días y los días como años. Por ejemplo, si tu
cadena es así

'13/05/2006'

el SQL Server cree que esa cadena representa el 5 del mes 13 de 2006 lo
cual no tiene sentido y por eso te da el error de Out-of-range.
Tendrás que llevar ambas fechas a un formato común. Esto se te puede
complicar si tus clientes que ingresan información tienen su Información
Regional unos en inglés y otros en español porque existen la posibilidad de
que haya información en formato dd/mm/yyyy y otra en formato
mm/dd/yyyy y tu aplicación no haya podido detectar el error. Este es
apenas uno de los problemas de almacena fechas en datos tipo char o varchar.

te quiero agregar que tu query con GETDATE probablemente nunca o casi nunca
va retornar ningún registro ya que getdate incluye la hora. Esto significa
que vas a comparar tu fecha con la hora del día y eso es bastante improbable
que funcione. Usá convert también en GEtDAte para que obtengás sólo la
fecha y no la hora o ninguno o casi ningún registro va a cumplir la
condición

Espero que la info te sea de utilidad
Saludos

Jorge González
Nicaragua


"Oswaldo" escribió en el mensaje
news:
Hola a todos, tengo el sgte qury

SELECT DISTINCT top 2 dsc_tituloaviso, dsc_textoaviso, dsc_fotovineta,
est_fotovineta,
dsc_fotoweb, est_fotoweb, ad_number,fecha_final FROM avisos
WHERE cod_subseccion='101' AND cod_departamento ='1'
and (fecha_final is not null or fecha_final<>'')
AND CONVERT(datetime,fecha_final,103)>=getdate()

El campo fecha_final es un char de 10 y las fechas que guarda ahí son del
tipo dd/mm/yyyy. Me sale el sgte error:

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value.

Alguien sabe como puedo solucionar este problema?

Saludos y gracias
Respuesta Responder a este mensaje
#3 Jorge Gonzalez
10/07/2006 - 22:09 | Informe spam
Retiro lo dicho el último párrafo. Hasta ahora estoy viendo que la condición
utiliza <= y no = y por tanto lo que escribí deja de tener validez.

saludos
Jorge González
Nicaragua

"Jorge Gonzalez" escribió en el mensaje
news:
Oswaldo,

No es lo más adecuado almacenar fechas ni horas en varchar ni en char. En
general acarrean problemas.
El problema en tu consulta es que el servidor que la está ejecutando está
interpretando los meses como días y los días como años. Por ejemplo, si tu
cadena es así

'13/05/2006'

el SQL Server cree que esa cadena representa el 5 del mes 13 de 2006 lo
cual no tiene sentido y por eso te da el error de Out-of-range.
Tendrás que llevar ambas fechas a un formato común. Esto se te puede
complicar si tus clientes que ingresan información tienen su Información
Regional unos en inglés y otros en español porque existen la posibilidad
de que haya información en formato dd/mm/yyyy y otra en formato
mm/dd/yyyy y tu aplicación no haya podido detectar el error. Este es
apenas uno de los problemas de almacena fechas en datos tipo char o
varchar.

te quiero agregar que tu query con GETDATE probablemente nunca o casi
nunca va retornar ningún registro ya que getdate incluye la hora. Esto
significa que vas a comparar tu fecha con la hora del día y eso es
bastante improbable que funcione. Usá convert también en GEtDAte para que
obtengás sólo la fecha y no la hora o ninguno o casi ningún registro va a
cumplir la condición

Espero que la info te sea de utilidad
Saludos

Jorge González
Nicaragua


"Oswaldo" escribió en el mensaje
news:
Hola a todos, tengo el sgte qury

SELECT DISTINCT top 2 dsc_tituloaviso, dsc_textoaviso, dsc_fotovineta,
est_fotovineta,
dsc_fotoweb, est_fotoweb, ad_number,fecha_final FROM avisos
WHERE cod_subseccion='101' AND cod_departamento ='1'
and (fecha_final is not null or fecha_final<>'')
AND CONVERT(datetime,fecha_final,103)>=getdate()

El campo fecha_final es un char de 10 y las fechas que guarda ahí son del
tipo dd/mm/yyyy. Me sale el sgte error:

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value.

Alguien sabe como puedo solucionar este problema?

Saludos y gracias




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