Ладно, проблема в форматах даты. То есть вы имеете в виду, что ваше приложение пытается вставить даты примерно так:
insert into Table1 (DateField1) values ('31/3/2008')
что терпит неудачу, потому что думает, что "31" - это месяц? Да, я тоже столкнулся с этой проблемой в Австралии. Ваш выбор:
1) Измените язык базы данных по умолчанию и язык для существующих пользователей. Язык фактически настроен для каждого входа в систему, например, SQL Management Studio, Безопасность -> Войдите в систему, щелкните правой кнопкой мыши имя входа, перейдите в «Свойства» и измените «Язык по умолчанию» с английского на британский английский. Чтобы это также происходило со всеми новыми пользователями, необходимо изменить язык сервера по умолчанию, что делается с помощью:
select * from sys.syslanguages
.... затем найдите язык, который вы ищете, то есть британский английский и отметьте langid
. Чтобы установить его, скажите, если в британском английском есть langid = 23:
sp_configure 'default language', 23
go
reconfigure
go
2) Заставьте ваше приложение делать выбор / вставку даты с использованием соответствующего преобразования, т.е.
insert into Table1 (DateField) values (convert(datetime, '31/3/2008', 103))
select DateField1 from Table1 where DateField1 = convert(datetime, '31/3/2008, 103))
3) Заставьте ваше приложение делать выбор / вставку даты в международном формате. От BOL:
Мы рекомендуем вам использовать дату и время
форматы, которые не являются DATEFORMAT
зависимы и являются мультиязычными.
Форматы ISO 8601,
'1998-02-23T14: 23: 05' и
«1998-02-23T14: 23: 05-08: 00» являются
только международные форматы
стандарт. Они не являются DATEFORMAT или
язык входа по умолчанию зависит от
многоязычны.
Я предполагаю, что в этом случае вы можете легче изменить базу данных, чем приложение, но если это не так, то вам действительно следует заставить приложение делать вещи более глобально. Дизайн приложения / базы данных должен стараться быть независимым от формата, где это возможно.