formato fechas

07/11/2005 - 19:17 por josepe | Informe spam
Saludos,

Tengo un site web con una base de datos SQL server, esta base de datos tiene
campos tipo datetime en formato US_English: mm/dd/yyyy hh:mm:ss
La web ASP se hizo con Interdev utilizando todos los objetos y funciones que
crea Interdev para conectar con la base de datos.

Todo funcionava ok en mi servidor antiguo de USA, ahora he cambiado a un
servidor en United Kingdom, y todos estos objetos y funciones de Interdev
devuelven ahora las fechas en formato europeo: "dd/mm/yyyy".

He revisado los settings del sistema y los de SQL y parece todo ok:
- Regional settings OS estan a USA
- Idioma del usuario de conexión a SQL es English.

De hecho si hago una página ASP sin utilizar Interdev, creando los OBJETOS,
Connection y Recordset, devuelve el formato correcto del sistema.

Algo passa con los objetos que crea Interdev, o debo cambiar algun parámetro
interno del sistema o SQL server para que por defecto utilize el formato
"mm/dd/yy"

No puedo cambiar el código de la web, debo cambiar solo la configuración de
SQL o del sistema.

Alguna idea?

Muchas gracias.
 

Leer las respuestas

#1 Alejandro Mesa
07/11/2005 - 19:57 | Informe spam
josepe,

Por parte de sql server, los valores tipo datetime son almacenados en dos
enteros de 4 bytes, el primero para los dias antes o despues de la fecha de
referencia (Enero 01 1900) y el segundo para guardar el tiempo del dia,
almacenandose los milisegundos despues de laq media noche. Sql Server no
guarda la fecha en ningun formato, sino que de acuerdo a ciertos settings
este interpreta los valores de fecha de acuerdo a un formato dado por el
valor del lenguaje que se escojio al instalar sql server o al formato en
tiempo de ejecucion que se da con "set dateformat".

Para evitar este tipo de problemas, siempre se debe usar un formato estandar
que sql server puede interpretar como fecha independiente del lenguaje y / o
seteo de dateformat. Este formato es el formato ISO (ve la funcion "convert"
en los libros en linea con los estilos 112 y 126).

Ejemplo:

set dateformat mdy
go

select cast('20051107' as datetime)
go

set dateformat dmy
go

select cast('20051107' as datetime)
go

select cast('01/31/2005' as datetime)


AMB

"josepe" wrote:

Saludos,

Tengo un site web con una base de datos SQL server, esta base de datos tiene
campos tipo datetime en formato US_English: mm/dd/yyyy hh:mm:ss
La web ASP se hizo con Interdev utilizando todos los objetos y funciones que
crea Interdev para conectar con la base de datos.

Todo funcionava ok en mi servidor antiguo de USA, ahora he cambiado a un
servidor en United Kingdom, y todos estos objetos y funciones de Interdev
devuelven ahora las fechas en formato europeo: "dd/mm/yyyy".

He revisado los settings del sistema y los de SQL y parece todo ok:
- Regional settings OS estan a USA
- Idioma del usuario de conexión a SQL es English.

De hecho si hago una página ASP sin utilizar Interdev, creando los OBJETOS,
Connection y Recordset, devuelve el formato correcto del sistema.

Algo passa con los objetos que crea Interdev, o debo cambiar algun parámetro
interno del sistema o SQL server para que por defecto utilize el formato
"mm/dd/yy"

No puedo cambiar el código de la web, debo cambiar solo la configuración de
SQL o del sistema.

Alguna idea?

Muchas gracias.



Preguntas similares