ayuda con conversion.

15/01/2004 - 21:54 por genaro | Informe spam
Saludos ante todo.

Disculpen que moleste, pero hay algo que no se como hacer,
talvez me poden ayudar.

Hay un campo tipo char en el que se almacena una fecha y
hora de la siguiente forma: 'dd/mm/yyyy hh:mm:ss ampm'
que se llama fecha_in
(esto ya estaba así, no se porque definieron el campo char
cuando podían haberlo hecho con datetime ó smalldatetime)

Si yo quisiera listar registros de este campo que cumplan
con un intervalo de fechas se supone lo siguiente:
SELECT *
FROM Tabla_datos
WHERE (CONVERT(char, substring(fecha_in,1,10), 103) >=
CONVERT(char, '01/09/2003', 103)) AND (CONVERT(char,
substring(fecha_in,1,10), 103) <= CONVERT
(char, '29/09/2003', 103))

Y me hace el select, pero cuando miro hay registros que
tienen este campo anteriores y posteriores al supuesto
rango de fecha que yo le digo que quiero listar.

Tienen? alguna idea de que puede estar pasando????
Se los agradecía mucho...

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
15/01/2004 - 22:02 | Informe spam
hmmm prueba con el formato iso para ambos casos

YYYYMMDD


Te comento que deberias cambiar el tipo de datos ya que esto no es optimo
para tu motor (hablo del convert sobre el campo y no sobre los datos)

Salu2


Maximiliano Damian Accotto


"genaro" escribió en el mensaje
news:01af01c3dba9$c51e9e60$
Saludos ante todo.

Disculpen que moleste, pero hay algo que no se como hacer,
talvez me poden ayudar.

Hay un campo tipo char en el que se almacena una fecha y
hora de la siguiente forma: 'dd/mm/yyyy hh:mm:ss ampm'
que se llama fecha_in
(esto ya estaba así, no se porque definieron el campo char
cuando podían haberlo hecho con datetime ó smalldatetime)

Si yo quisiera listar registros de este campo que cumplan
con un intervalo de fechas se supone lo siguiente:
SELECT *
FROM Tabla_datos
WHERE (CONVERT(char, substring(fecha_in,1,10), 103) >CONVERT(char, '01/09/2003', 103)) AND (CONVERT(char,
substring(fecha_in,1,10), 103) <= CONVERT
(char, '29/09/2003', 103))

Y me hace el select, pero cuando miro hay registros que
tienen este campo anteriores y posteriores al supuesto
rango de fecha que yo le digo que quiero listar.

Tienen? alguna idea de que puede estar pasando????
Se los agradecía mucho...
Respuesta Responder a este mensaje
#2 genaro
15/01/2004 - 22:18 | Informe spam
Gracias.
voy a probar y luego veré como hago para cambiar este
campo.
hmmm prueba con el formato iso para ambos casos

YYYYMMDD


Te comento que deberias cambiar el tipo de datos ya que


esto no es optimo
para tu motor (hablo del convert sobre el campo y no


sobre los datos)

Salu2


Maximiliano Damian Accotto


"genaro" escribió en el mensaje
news:01af01c3dba9$c51e9e60$
Saludos ante todo.

Disculpen que moleste, pero hay algo que no se como hacer,
talvez me poden ayudar.

Hay un campo tipo char en el que se almacena una fecha y
hora de la siguiente forma: 'dd/mm/yyyy hh:mm:ss ampm'
que se llama fecha_in
(esto ya estaba así, no se porque definieron el campo char
cuando podían haberlo hecho con datetime ó smalldatetime)

Si yo quisiera listar registros de este campo que cumplan
con un intervalo de fechas se supone lo siguiente:
SELECT *
FROM Tabla_datos
WHERE (CONVERT(char, substring(fecha_in,1,10), 103) >>CONVERT(char, '01/09/2003', 103)) AND (CONVERT(char,
substring(fecha_in,1,10), 103) <= CONVERT
(char, '29/09/2003', 103))

Y me hace el select, pero cuando miro hay registros que
tienen este campo anteriores y posteriores al supuesto
rango de fecha que yo le digo que quiero listar.

Tienen? alguna idea de que puede estar pasando????
Se los agradecía mucho...





.

Respuesta Responder a este mensaje
#3 genaro
15/01/2004 - 22:53 | Informe spam
Bien por si a alguien le sirve: mi error era pasar de
caracter a fecha.
lo correcto sería:
SELECT *
FROM Tabla_datos
WHERE CONVERT(datetime, substring(fecha_in,1,10), 103)
BETWEEN CONVERT(datetime, '01/09/2003', 103) AND CONVERT
(datetime, '29/09/2003', 103)

Gracias.
Saludos ante todo.

Disculpen que moleste, pero hay algo que no se como


hacer,
talvez me poden ayudar.

Hay un campo tipo char en el que se almacena una fecha y
hora de la siguiente forma: 'dd/mm/yyyy hh:mm:ss ampm'
que se llama fecha_in
(esto ya estaba así, no se porque definieron el campo


char
cuando podían haberlo hecho con datetime ó smalldatetime)

Si yo quisiera listar registros de este campo que cumplan
con un intervalo de fechas se supone lo siguiente:
SELECT *
FROM Tabla_datos
WHERE (CONVERT(char, substring(fecha_in,1,10), 103) >=
CONVERT(char, '01/09/2003', 103)) AND (CONVERT(char,
substring(fecha_in,1,10), 103) <= CONVERT
(char, '29/09/2003', 103))

Y me hace el select, pero cuando miro hay registros que
tienen este campo anteriores y posteriores al supuesto
rango de fecha que yo le digo que quiero listar.

Tienen? alguna idea de que puede estar pasando????
Se los agradecía mucho...




.

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