Problema con fechas y cambio de servidor

30/05/2007 - 00:07 por JC | Informe spam
Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión en
inglés a uno versión en español. Hice el attach de la BD en el servidor en
español sin ningún problema. El programa que utiliza la base de datos hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se me
presenta es cuando trato de insertar un registro con fecha, me da el error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC

Preguntas similare

Leer las respuestas

#1 Isaias
30/05/2007 - 00:46 | Informe spam
En tu analizador de consultas ejecuta:

SELECT ISDATE('2007-05-29')

Debe darte como resultado un UNO (1)
Saludos
IIslas


"JC" wrote:

Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión en
inglés a uno versión en español. Hice el attach de la BD en el servidor en
español sin ningún problema. El programa que utiliza la base de datos hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se me
presenta es cuando trato de insertar un registro con fecha, me da el error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC



Respuesta Responder a este mensaje
#2 JC
30/05/2007 - 01:05 | Informe spam
Isaias, y esto como me resuelve el problema?
Gracias, JC

"Isaias" escribió en el mensaje
news:
En tu analizador de consultas ejecuta:

SELECT ISDATE('2007-05-29')

Debe darte como resultado un UNO (1)
Saludos
IIslas


"JC" wrote:

Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión
en
inglés a uno versión en español. Hice el attach de la BD en el servidor
en
español sin ningún problema. El programa que utiliza la base de datos
hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se
me
presenta es cuando trato de insertar un registro con fecha, me da el
error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera
de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC



Respuesta Responder a este mensaje
#3 Francizk0
30/05/2007 - 02:19 | Informe spam
porq no utlizas un Convert

CONVERT(CHAR(10),Campo_Fecha,103)

el formato 103 transforma a DD/MM/YYYY no importamndo como hay sido
grabado
a pero claro q todos los campos fechas deben estar grabados en el
mismo formato u orden ( YYYY-MM-DD ) ,

lo que te recomiendo es q primero revivises q las fechas todas esten
bien grabadas osea en un mismo orden
Respuesta Responder a este mensaje
#4 JCASTIBLANCO
30/05/2007 - 03:58 | Informe spam
Hola, yo creo que la solución de Franciz es válida siempre y cuando no
tengas que modificar en muchos puntos a la App, que estás utilizando para
poblar la base de datos. Pienso que el problema se generó con el collation
settings que escogiste al momento de instalar la instacia de la base de
datos. Revisa cual tienes por defecto en la base antigua y en la base nueva.
En la antigua debes tener una de tipo Latin1_General . y en la nueva un
Modern_Spanish. Para ver más de esto puedes consultar los siguientes links:
http://msdn2.microsoft.com/en-us/li...43508.aspx
http://msdn2.microsoft.com/en-us/li...43726.aspx
http://msdn2.microsoft.com/en-us/li...43515.aspx

"JC" wrote:

Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión en
inglés a uno versión en español. Hice el attach de la BD en el servidor en
español sin ningún problema. El programa que utiliza la base de datos hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se me
presenta es cuando trato de insertar un registro con fecha, me da el error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC



Respuesta Responder a este mensaje
#5 JC
30/05/2007 - 04:05 | Informe spam
Ese no es el problema, las fechas ya están en formato ISO (YYYY-MM-DD), el
problema es que el idioma es diferente en cada servidor. Uno está en inglés
(originalmente) y el otro en español (donde debo pasar la BD).

Si pruebas lo siguiente en el Analizador de consultas, verás que ocurre:

SET LANGUAGE SPANISH
INSERT INTO Empleados (fecha) Values('2007-05-29')

*** Sql Server genera el error ***
Parece que cuando el SQL Server está instalado en español
no acepta el formato de fecha anterior y se produce el error.

Ahora, si pruebas lo siguiente:

SET LANGUAGE ENGLISH
INSERT INTO Empleados (fecha) Values('2007-05-29')

*** NO se produce el error ***

Cualquier idea o sugerencia, es bienvenida.

Gracias, JC.



"Francizk0" escribió en el mensaje
news:
porq no utlizas un Convert

CONVERT(CHAR(10),Campo_Fecha,103)

el formato 103 transforma a DD/MM/YYYY no importamndo como hay sido
grabado
a pero claro q todos los campos fechas deben estar grabados en el
mismo formato u orden ( YYYY-MM-DD ) ,

lo que te recomiendo es q primero revivises q las fechas todas esten
bien grabadas osea en un mismo orden


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida