Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problema con fechas y cambio de servidor

0 views
Skip to first unread message

JC

unread,
May 29, 2007, 6:07:02 PM5/29/07
to
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


Isaias

unread,
May 29, 2007, 6:46:02 PM5/29/07
to
En tu analizador de consultas ejecuta:

SELECT ISDATE('2007-05-29')

Debe darte como resultado un UNO (1)
--
Saludos
IIslas

JC

unread,
May 29, 2007, 7:05:38 PM5/29/07
to
Isaias, y esto como me resuelve el problema?
Gracias, JC

"Isaias" <Isa...@discussions.microsoft.com> escribió en el mensaje
news:69C3C62B-AE7B-4872...@microsoft.com...

Francizk0

unread,
May 29, 2007, 8:19:39 PM5/29/07
to
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


JCASTIBLANCO

unread,
May 29, 2007, 9:58:01 PM5/29/07
to

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/library/ms143508.aspx
http://msdn2.microsoft.com/en-us/library/ms143726.aspx
http://msdn2.microsoft.com/en-us/library/ms143515.aspx

JC

unread,
May 29, 2007, 10:05:56 PM5/29/07
to
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" <jfcor...@gmail.com> escribió en el mensaje
news:1180484378.9...@w5g2000hsg.googlegroups.com...

JC

unread,
May 29, 2007, 10:21:30 PM5/29/07
to
El Collation del servidor en inglés es Traditional_Spanish_CI_AS y el
Collation del servidor en español es la Modern_Spanish.
Alguna sugerencia para arreglar esto?
Gracias, JC


"JCASTIBLANCO" <JCASTI...@discussions.microsoft.com> escribió en el
mensaje news:CC70FABD-B05A-4C97...@microsoft.com...

JCASTIBLANCO

unread,
May 29, 2007, 10:46:01 PM5/29/07
to
Pues lamentablemente no hay forma de cambiar el collation settings de la
instacia, podrías crear una nueva instancia con la configuración de la
original.

JC

unread,
May 29, 2007, 10:57:36 PM5/29/07
to
Ok, voy a probar esa opción. Espero que esta sea la solución.
Gracias por tu ayuda.
JC

"JCASTIBLANCO" <JCASTI...@discussions.microsoft.com> escribió en el

mensaje news:4DFE306E-EB31-4EA4...@microsoft.com...

Jesús López

unread,
May 30, 2007, 5:20:05 AM5/30/07
to
Es que el formato ISO no es YYYY-MM-DD sino YYYYMMDD

Si pruebas esto verás como no da error:


SET LANGUAGE SPANISH
INSERT INTO Empleados (fecha) Values('20070529')


SET LANGUAGE ENGLISH
INSERT INTO Empleados (fecha) Values('20070529')

"JC" <NOSPAM_...@telcel.net.ve> escribió en el mensaje
news:OIQ097lo...@TK2MSFTNGP06.phx.gbl...

Maxi

unread,
May 30, 2007, 8:45:06 AM5/30/07
to
jc, estas seguro que estas pasando en ANSI ojo que el ANSI es YYYYMMDD
hh:mm:ss sin guiones ni nada

--

Salu2

-----------------------------------------
Microsoft MVP SQL Server
Culminis Speaker
------------------------------------------


"JC" <NOSPAM_...@telcel.net.ve> escribió en el mensaje

news:%23Lccb2j...@TK2MSFTNGP05.phx.gbl...

Alejandro Mesa

unread,
May 30, 2007, 9:56:02 AM5/30/07
to
JC,

Puedes mostrarnos como haces el insert?

Segun lo que dices, insertas usando formato ISO (yyyymmdd), por lo cual no
debe darte error de conversion, no importa que lenguaje uses ni tampoco el
seteo de "dateformat".

Ejemplo:

create table dbo.t1 (c1 datetime)
go

set language Spanish
go

insert into dbo.t1 values('20070530')
go

set language English
go

insert into dbo.t1 values('20070530')
go

drop table dbo.t1
go


AMB

JC

unread,
May 30, 2007, 7:55:49 PM5/30/07
to
Ya solucioné el problema. La función que le da formato a la fecha en formato
ISO, tenía la salida en formato YYYY-MM-DD el cual no daba problemas con el
servidor inicial en inglés. Lo que hice fue eliminar los guiones y llevar el
formato de salida a YYYYMMDD y ahora si funciona en los dos servidores.
Gracias a todos por su ayuda.
JC


"Alejandro Mesa" <Alejan...@discussions.microsoft.com> escribió en el
mensaje news:7BAF229C-23FB-488C...@microsoft.com...

0 new messages