2008-12-01 11 views
18

Necesito cambiar el formato de fecha de los Estados Unidos (dd/mm/aaaa) a Reino Unido (dd/mm/aaaa) en una sola base de datos en un servidor SQL.cambio de fecha por defecto el formato de hora en una sola base de datos en SQL Server

¿Cómo se puede hacer esto?

He visto declaraciones que hacen esto para todo el sistema, y ​​las que lo hacen para la sesión, pero no puedo cambiar el código ahora, ya que tendrá que someterse nuevamente a QA, así que necesito una rápida arreglar para cambiar el formato de fecha y hora.

actualización

que darse cuenta de que la fecha y hora no tiene nada que ver con cómo SQL Server almacena los datos, pero tiene mucho que ver con la forma en que analiza las consultas.

estoy sujeción datos en bruto de un archivo XML en una base de datos. Las fechas en el archivo XML están en formato de fecha del Reino Unido.

Respuesta

20

Usted podría utilizar SET DATEFORMAT, como en este ejemplo

declare @dates table (orig varchar(50) ,parsed datetime) 

SET DATEFORMAT ydm; 

insert into @dates 
select '2008-09-01','2008-09-01' 

SET DATEFORMAT ymd; 
insert into @dates 
select '2008-09-01','2008-09-01' 

select * from @dates 

que tendría que especificar el dateformat en el código al analizar los datos XML

+13

Eso cambia el formato de fecha de SESIÓN, no la BASE DE DATOS. –

+1

@Y. Ecarri - entonces, ¿cómo cambiar el formato de la fecha de DATABASE (no el de la fecha y la hora)? En mi servidor SQL, el formato es aaaa-mm-dd, sin embargo, necesito mm/dd/aaaa de forma permanente. Por favor ayuda. – xameeramir

-1

¿Se da cuenta de que el formato no tiene nada que ver con cómo SQL Server almacena de fecha y hora, ¿verdad?

Puede utilizar set dateformat para cada sesión. No hay configuración para la base de datos solamente.

Si utiliza parámetros de inserción de datos o actualizar o donde filtrado que no tendrá ningún problema con eso.

+0

Ver respuesta anterior –

3

sólo se puede cambiar el idioma en todo el servidor, no bases de datos individuales. Sin embargo, si usted necesita para apoyar el Reino Unido puede ejecutar el siguiente comando antes de todas las entradas y salidas:

set language 'british english' 

O si usted está teniendo problemas que entran DataTimes de su aplicación es posible que desee considerar un tipo de entrada universal como

1-diciembre-2008

+1

¿Cómo se cambia el idioma en el servidor? –

0

Si esto realmente es un tema de control de calidad y no se puede cambiar el código. Configure una nueva instancia de servidor en la máquina y configure el idioma como "inglés británico"

10

Para evitar tener que lidiar con estos aburridos problemas, le aconsejo que siempre analice sus datos con el estándar y fecha SQL/ISO única formato que es AAAA-MM-DD. Sus consultas funcionarán internacionalmente, sin importar cuáles sean los parámetros de fecha en su servidor principal o en los clientes que realizan consultas (¡donde la configuración de la fecha local puede ser diferente a la configuración del servidor principal)!

+1

desafortunadamente no estoy generando los datos solo lo consumí. –

+6

Philippe - Estaba convencido de eso hasta que alguien me mostró un ejemplo en SQL Server 2008 cuando la fecha especificada como 2008-09-01 se tradujo al 9 de enero de 2008 cuando la región se estableció en EE. UU. – kristof

+0

Como regla, trato de evitar usar la fecha en formato de cadena en el nivel de la base de datos. Al tratar con la entrada de datos, lanzaría la cadena hasta la fecha en el nivel de la aplicación usando la configuración regional apropiada para que luego llegue al tipo de fecha de fecha y hora de fecha y hora. De esta forma es independiente en la configuración local – kristof

-1

Uso:

select * from mytest 
EXEC sp_rename 'mytest.eid', 'id', 'COLUMN' 
alter table mytest add id int not null identity(1,1) 
update mytset set eid=id 
ALTER TABLE mytest DROP COLUMN eid 

ALTER TABLE [dbo].[yourtablename] ADD DEFAULT (getdate()) FOR [yourfieldname] 

Funciona al 100%.

-1

Para SQL Server 2008 se ejecuta:

EXEC sp_defaultlanguage 'username', 'british' 
4

Aunque no se puede establecer el formato de fecha por defecto para una sola base de datos, puede cambiar el idioma predeterminado para un inicio de sesión que se utiliza para acceder a esta base de datos:

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British 

En algunos casos, ayuda.

Cuestiones relacionadas