Измените формат времени по умолчанию для одной базы данных в SQL Server

Мне нужно изменить формат даты с US (мм / дд / ГГГГ) на UK (дд / мм / ГГГГ) в одной базе данных на сервере SQL.

Как это можно сделать?

Я видел утверждения, которые делают это для всей системы, и те, которые делают это для сеанса, но я не могу изменить код сейчас, так как он должен будет снова пройти QA, поэтому мне нужно быстрое исправление, чтобы изменить формат даты времени.

Обновить

Я понимаю, что время даты не имеет ничего общего с тем, как SQL Server хранит данные, но оно во многом связано с тем, как он анализирует запросы.

Я собираю необработанные данные из файла XML в базу данных. Даты в файле XML указаны в формате даты в Великобритании.

Решение

Вы можете использовать SET DATEFORMAT , как в этом примере

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

Вам нужно будет указать формат даты в коде при анализе данных XML

Комментарии (2)

Чтобы не заниматься этими очень скучными вопросами, Я советую вам всегда анализировать ваши данные с помощью стандартного и уникального формата даты SQL / ISO , который является ГГГГ-ММ-ДД. Ваши запросы будут работать на международном уровне, независимо от того, какие параметры даты находятся на вашем главном сервере или на запрашивающих клиентах (где локальные настройки даты могут отличаться от настроек основного сервера)!

Комментарии (5)

Хотя вы не можете установить формат даты по умолчанию для одной базы данных, вы можете изменить язык по умолчанию для входа в систему, который используется для доступа к этой базе данных:

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British

В некоторых случаях это помогает.

Комментарии (0)

Вы можете изменить язык только на всем сервере, а не на отдельных базах данных. Однако, если вам необходимо поддержать Великобританию, вы можете выполнить следующую команду перед всеми входами и выходами:

set language 'british english'

Или, если у вас возникли проблемы с вводом данных из вашего приложения, вы можете рассмотреть универсальный тип ввода, например

1 декабря 2008 г

Комментарии (1)

Если это действительно проблема QA, и вы не можете изменить код. Настройте новый экземпляр сервера на компьютере и настройте язык как «британский английский»

Комментарии (0)

Использовать:

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]

Работает на 100%.

Комментарии (0)

Для SQL Server 2008 выполните:

EXEC sp_defaultlanguage 'username', 'british'
Комментарии (0)

Вы понимаете, что формат не имеет ничего общего с тем, как SQL Server хранит дату и время, верно?

Вы можете использовать set dateformat для каждого сеанса. Там нет настройки только для базы данных.

Если вы используете параметры для вставки или обновления данных или для фильтрации, у вас не будет проблем с этим.

Комментарии (1)