Изменить формат даты и времени по умолчанию для одной базы данных в SQL Server - PullRequest
19 голосов
/ 01 декабря 2008

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

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

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

Обновление

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

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

Ответы [ 8 ]

21 голосов
/ 02 декабря 2008

Вы можете использовать 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-данных

11 голосов
/ 01 декабря 2008

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

4 голосов
/ 06 февраля 2015

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

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British

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

3 голосов
/ 01 декабря 2008

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

set language 'british english'

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

1-Dec-2008

0 голосов
/ 08 июля 2009

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

EXEC sp_defaultlanguage 'username', 'british'
0 голосов
/ 03 февраля 2009

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

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 голосов
/ 01 декабря 2008

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

0 голосов
/ 01 декабря 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...