Ошибка преобразования даты и времени для 1 sql сервера, но не другого - PullRequest
3 голосов
/ 08 ноября 2011

У меня есть 2 сервера под управлением SQL Server 2008, и у меня есть следующий запрос:

SELECT cast('13/1/2011' as datetime)

Если я выполню этот запрос на Сервер A , я получу результат:

2011-01-13 00:00:00.000

Однако, если я выполню это на Сервер B , я получу результат:

Преобразование типа данных varchar в тип данных datetime приведетв значении вне допустимого диапазона.

Я считаю, что это проблема формата даты в Великобритании / США, поскольку я не получаю сообщение об ошибке с 12/1/2011, но оно возвращает 2011-12-01 00:00:00.000

Как мне получить Сервер B , чтобы получить тот же результат, что и Сервер A ?Какие настройки нужно изменить и где?

Ответы [ 2 ]

6 голосов
/ 08 ноября 2011

Это языковая настройка login, которая управляет интерпретацией этих неоднозначных форматов даты (хотя это можно переопределить явным оператором SET DATEFORMAT).

DEFAULT_LANGUAGE можно изменить с помощью ALTER LOGIN

1 голос
/ 28 марта 2013

Более того, не полагайтесь на настройки SET DATEFORMAT или DEFAULT_LANGUAGE, чтобы обеспечить правильную работу преобразований даты.В SQL Server всегда следует - в порядке передовой практики - либо использовать нейтральный формат, либо использовать явный спецификатор формата, независимо от того, какие настройки языка используются или как выглядят ваши даты.Попробуйте следующее на обоих серверах, и у вас не возникнет проблем.

...