Problema con fechas. SQL Server 2000 to SQL Server 2005

05/03/2007 - 13:22 por gabriel.jaume | Informe spam
Hola a tod@s,

Estoy migrando una base de datos de sql server 2000 a 2005, y me he
encontrado un gran problema con el tema de las fechas.

En la base de datos todas las fechas están en campos "datetime" en el
formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

Los procedimientos almacenado que tienen parámetros del tipo
"datetime" ahora fallan dando el error:
"Error converting data type nvarchar to datetime." Cuando le paso una
fecha que pasa del día 12...

Por otro lado, a la hora de insertar registros ahora los inserta en
formato americano... Y al mostrarlos por pantalla se muestra en
formato español tomando el mes por el dia y viceversa.

Alguien sabe como puedo solucionar este problema?

Preguntas similare

Leer las respuestas

#1 Maxi
05/03/2007 - 14:36 | Informe spam
Hola, esto es porque no estas manejando bien las fechas, te paso un articulo
que escribi ya hace bastante tiempo

http://www.microsoft.com/spanish/ms...art157.asp

escribió en el mensaje
news:
Hola a ,

Estoy migrando una base de datos de sql server 2000 a 2005, y me he
encontrado un gran problema con el tema de las fechas.

En la base de datos todas las fechas están en campos "datetime" en el
formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

Los procedimientos almacenado que tienen parámetros del tipo
"datetime" ahora fallan dando el error:
"Error converting data type nvarchar to datetime." Cuando le paso una
fecha que pasa del día 12...

Por otro lado, a la hora de insertar registros ahora los inserta en
formato americano... Y al mostrarlos por pantalla se muestra en
formato español tomando el mes por el dia y viceversa.

Alguien sabe como puedo solucionar este problema?
Respuesta Responder a este mensaje
#2 Gabi
05/03/2007 - 15:01 | Informe spam
On 5 mar, 15:36, "Maxi" wrote:
Hola, esto es porque no estas manejando bien las fechas, te paso un articulo
que escribi ya hace bastante tiempo

http://www.microsoft.com/spanish/ms.../art157...

escribió en el mensajenews:
Hola a ,

Estoy migrando una base de datos de sql server 2000 a 2005, y me he
encontrado un gran problema con el tema de las fechas.

En la base de datos todas las fechas están en campos "datetime" en el
formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

Los procedimientos almacenado que tienen parámetros del tipo
"datetime" ahora fallan dando el error:
"Error converting data type nvarchar to datetime." Cuando le paso una
fecha que pasa del día 12...

Por otro lado, a la hora de insertar registros ahora los inserta en
formato americano... Y al mostrarlos por pantalla se muestra en
formato español tomando el mes por el dia y viceversa.

Alguien sabe como puedo solucionar este problema?



Hola Maxi,

Lo he leido y es muy muy interesante. Teniendo en cuenta mi situación
actual en la que tengo un proyecto de una magnitud bastante grande
funcionando con el formato de fechas en español con las siguientes
premisas:
1. Todo acceso a datos está implementado a través de store procedures.
2. Existe una capa de datos intermedia en C# que lanza todos estos
store procedures.
- Los parametros fecha, en la clase de datos son siempre strings y
es aquí donde ocurre uno de los problemas, ya que con sql server 2005
el auto cast lo hace sobre una fecha en formato americano. Me
aconsejarías hacer un convert(datetime, @fecha, 103) en cada store
procedure?
3. En muchos casos, paso como parámetro Datetime.Now.toString() el
cual me da la fecha en formato español, lo tengo que cambiar a formato
ANSI Standar o americano por todo?

No tengo muy claro cual es la mejor forma de adaptar el proyecto
que me aconsejas?
Respuesta Responder a este mensaje
#3 Gabi
05/03/2007 - 15:12 | Informe spam
On 5 mar, 16:01, "Gabi" wrote:
On 5 mar, 15:36, "Maxi" wrote:





> Hola, esto es porque no estas manejando bien las fechas, te paso un articulo
> que escribi ya hace bastante tiempo

>http://www.microsoft.com/spanish/ms.../art157...

> escribió en el mensajenews:
> Hola a ,

> Estoy migrando una base de datos de sql server 2000 a 2005, y me he
> encontrado un gran problema con el tema de las fechas.

> En la base de datos todas las fechas están en campos "datetime" en el
> formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
> 2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

> Los procedimientos almacenado que tienen parámetros del tipo
> "datetime" ahora fallan dando el error:
> "Error converting data type nvarchar to datetime." Cuando le paso una
> fecha que pasa del día 12...

> Por otro lado, a la hora de insertar registros ahora los inserta en
> formato americano... Y al mostrarlos por pantalla se muestra en
> formato español tomando el mes por el dia y viceversa.

> Alguien sabe como puedo solucionar este problema?

Hola Maxi,

Lo he leido y es muy muy interesante. Teniendo en cuenta mi situación
actual en la que tengo un proyecto de una magnitud bastante grande
funcionando con el formato de fechas en español con las siguientes
premisas:
1. Todo acceso a datos está implementado a través de store procedures.
2. Existe una capa de datos intermedia en C# que lanza todos estos
store procedures.
- Los parametros fecha, en la clase de datos son siempre strings y
es aquí donde ocurre uno de los problemas, ya que con sql server 2005
el auto cast lo hace sobre una fecha en formato americano. Me
aconsejarías hacer un convert(datetime, @fecha, 103) en cada store
procedure?
3. En muchos casos, paso como parámetro Datetime.Now.toString() el
cual me da la fecha en formato español, lo tengo que cambiar a formato
ANSI Standar o americano por todo?

No tengo muy claro cual es la mejor forma de adaptar el proyecto
que me aconsejas?- Ocultar texto de la cita -

- Mostrar texto de la cita -



Hola Maxi... He cambiado el idioma del usuario con el que accedo a
esta base de datos a Spanish, y así almenos consigo que me funcione el
proyecto de forma correcta.

De todos modos, agradecería un cosejo para adaptar con un esfuerzo
relativo el proyecto a una mejor forma de trabajo con el tema de las
fechas.

Un saludo y muchas gracias.
Respuesta Responder a este mensaje
#4 Maxi
05/03/2007 - 15:13 | Informe spam
Gabi, a ver, el manejo de fechas para que no tengas problemas debe ser
siempre en ANSI, esto evitara estos cambios. Segungo, no es un problema de
SQL2005 ya que en 2000 tambien pasa, el tipo de formato de la fecha lo
define el login y no SQLServer, fijate con que login estas entrando al
sistema y revisa que fecha tiene, fijate en 2000 y revisa que sea el mismo.
La opcion mas rapida en tu caso es poner el mismo idioma al login que tenias
en 2000, una solucion de fondo es cambiar los Stores o lo que fuere para que
trabajen con formato ANSI.
Los SP no deberian devolver la data en ningun formato convertido, ya que
puede suceder que tengas usuarios de distintas nacionalidades y en ese caso
que haras? un SP por cada nacionalidad? para ello esta el idioma en el
login, entonces en tu SP devolve la fecha sin convert ni nada por el estilo
y todo lo que sea formateo lo debes hacer en la capa de presentacion llegado
el caso.

Espero haber sido claro :S

"Gabi" escribió en el mensaje
news:
On 5 mar, 15:36, "Maxi" wrote:
Hola, esto es porque no estas manejando bien las fechas, te paso un
articulo
que escribi ya hace bastante tiempo

http://www.microsoft.com/spanish/ms.../art157...

escribió en el
mensajenews:
Hola a ,

Estoy migrando una base de datos de sql server 2000 a 2005, y me he
encontrado un gran problema con el tema de las fechas.

En la base de datos todas las fechas están en campos "datetime" en el
formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

Los procedimientos almacenado que tienen parámetros del tipo
"datetime" ahora fallan dando el error:
"Error converting data type nvarchar to datetime." Cuando le paso una
fecha que pasa del día 12...

Por otro lado, a la hora de insertar registros ahora los inserta en
formato americano... Y al mostrarlos por pantalla se muestra en
formato español tomando el mes por el dia y viceversa.

Alguien sabe como puedo solucionar este problema?



Hola Maxi,

Lo he leido y es muy muy interesante. Teniendo en cuenta mi situación
actual en la que tengo un proyecto de una magnitud bastante grande
funcionando con el formato de fechas en español con las siguientes
premisas:
1. Todo acceso a datos está implementado a través de store procedures.
2. Existe una capa de datos intermedia en C# que lanza todos estos
store procedures.
- Los parametros fecha, en la clase de datos son siempre strings y
es aquí donde ocurre uno de los problemas, ya que con sql server 2005
el auto cast lo hace sobre una fecha en formato americano. Me
aconsejarías hacer un convert(datetime, @fecha, 103) en cada store
procedure?
3. En muchos casos, paso como parámetro Datetime.Now.toString() el
cual me da la fecha en formato español, lo tengo que cambiar a formato
ANSI Standar o americano por todo?

No tengo muy claro cual es la mejor forma de adaptar el proyecto
que me aconsejas?
Respuesta Responder a este mensaje
#5 Gabi
05/03/2007 - 15:27 | Informe spam
On 5 mar, 16:13, "Maxi" wrote:
Gabi, a ver, el manejo de fechas para que no tengas problemas debe ser
siempre en ANSI, esto evitara estos cambios. Segungo, no es un problema de
SQL2005 ya que en 2000 tambien pasa, el tipo de formato de la fecha lo
define el login y no SQLServer, fijate con que login estas entrando al
sistema y revisa que fecha tiene, fijate en 2000 y revisa que sea el mismo.
La opcion mas rapida en tu caso es poner el mismo idioma al login que tenias
en 2000, una solucion de fondo es cambiar los Stores o lo que fuere para que
trabajen con formato ANSI.
Los SP no deberian devolver la data en ningun formato convertido, ya que
puede suceder que tengas usuarios de distintas nacionalidades y en ese caso
que haras? un SP por cada nacionalidad? para ello esta el idioma en el
login, entonces en tu SP devolve la fecha sin convert ni nada por el estilo
y todo lo que sea formateo lo debes hacer en la capa de presentacion llegado
el caso.

Espero haber sido claro :S

"Gabi" escribió en el mensajenews:
On 5 mar, 15:36, "Maxi" wrote:





> Hola, esto es porque no estas manejando bien las fechas, te paso un
> articulo
> que escribi ya hace bastante tiempo

>http://www.microsoft.com/spanish/ms.../art157...

> escribió en el
> mensajenews:
> Hola a ,

> Estoy migrando una base de datos de sql server 2000 a 2005, y me he
> encontrado un gran problema con el tema de las fechas.

> En la base de datos todas las fechas están en campos "datetime" en el
> formato español "dd/mm/yyyy hh:mm:ss", y parece ser que SQL Server
> 2005 trabaja con fechas en formato americano "mm/dd/yyyy hh:mm:ss".

> Los procedimientos almacenado que tienen parámetros del tipo
> "datetime" ahora fallan dando el error:
> "Error converting data type nvarchar to datetime." Cuando le paso una
> fecha que pasa del día 12...

> Por otro lado, a la hora de insertar registros ahora los inserta en
> formato americano... Y al mostrarlos por pantalla se muestra en
> formato español tomando el mes por el dia y viceversa.

> Alguien sabe como puedo solucionar este problema?

Hola Maxi,

Lo he leido y es muy muy interesante. Teniendo en cuenta mi situación
actual en la que tengo un proyecto de una magnitud bastante grande
funcionando con el formato de fechas en español con las siguientes
premisas:
1. Todo acceso a datos está implementado a través de store procedures.
2. Existe una capa de datos intermedia en C# que lanza todos estos
store procedures.
- Los parametros fecha, en la clase de datos son siempre strings y
es aquí donde ocurre uno de los problemas, ya que con sql server 2005
el auto cast lo hace sobre una fecha en formato americano. Me
aconsejarías hacer un convert(datetime, @fecha, 103) en cada store
procedure?
3. En muchos casos, paso como parámetro Datetime.Now.toString() el
cual me da la fecha en formato español, lo tengo que cambiar a formato
ANSI Standar o americano por todo?

No tengo muy claro cual es la mejor forma de adaptar el proyecto
que me aconsejas?- Ocultar texto de la cita -

- Mostrar texto de la cita -




Claro como el agua :)

Así lo haré, como trabajo de fondo, que no es poco ya que tienes toda
la razón en lo que dices.

Gracias por tus consejos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida