Подтвердить что ты не робот

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

Мне нужно изменить формат даты из США (мм/дд/гггг) в Великобританию (дд/мм/гггг) в одной базе данных на машине SQL-сервера.

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

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

Обновление

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

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

4b9b3361

Ответ 1

Вы можете использовать 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, который является YYYY-MM-DD. Затем ваши запросы будут работать на международном уровне, независимо от параметров даты на главном сервере или на клиентах запросов (где локальные параметры даты могут отличаться от настроек основного сервера)!

Ответ 3

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

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British

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

Ответ 4

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

set language 'british english'

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

1-Dec-2008

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

Использование:

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%.

Ответ 8

Для запуска SQL Server 2008:

EXEC sp_defaultlanguage 'username', 'british'