Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
rumka
Member

Откуда: Средняя Азия
Сообщений: 200
Всем здрасти.
Есть простая конвертация в дату
select convert(datetime,convert(varchar(10),getdate(),101))

Все хорошо работает на одном сервере. Поставили на другой и на нем эта же самая конвертация отваливается с ошибкой в sql manager.
Msg 242, Level 16, State 3, Line 11
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

На обоих серверах стоит SQL Server 2008 R2 Express, региональные настройки по дате в винде одинаковые.
Если выставить 104 формат,то все работает на обоих серверах.
В чем проблема?
16 окт 19, 09:13    [21995126]     Ответить | Цитировать Сообщить модератору
 Re: Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
Тяп-ляп
Member

Откуда: Москва
Сообщений: 797
Сравни результаты выполнения на серверах:
dbcc useroptions

обрати внимание на dateformat в результатах
16 окт 19, 09:28    [21995141]     Ответить | Цитировать Сообщить модератору
 Re: Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
rumka
Всем здрасти.
Есть простая конвертация в дату
select convert(datetime,convert(varchar(10),getdate(),101))


Все хорошо работает на одном сервере. Поставили на другой и на нем эта же самая конвертация отваливается с ошибкой в sql manager.
Msg 242, Level 16, State 3, Line 11
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.


На обоих серверах стоит SQL Server 2008 R2 Express, региональные настройки по дате в винде одинаковые.
Если выставить 104 формат,то все работает на обоих серверах.
В чем проблема?
Пользуйтесь 112 или 126 стилем CONVERT().
И почему вы во внешнем CONVERTе не задаёте стиль? Тем самым используете стиль 0.
Он зависит от @@LANGUAGE и @@DATEFORMAT.
16 окт 19, 09:31    [21995147]     Ответить | Цитировать Сообщить модератору
 Re: Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
rumka
Member

Откуда: Средняя Азия
Сообщений: 200
Спасибо всем.
Указание во внешнем Convert нужного стиля решает проблему.
Языки на серверах разные.
16 окт 19, 09:47    [21995161]     Ответить | Цитировать Сообщить модератору
 Re: Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
К примеру, что даст вот этот запрос в одной базе и в другой?
SELECT STUFF(STUFF(STUFF('___',F%10,1,'D'),F/100%10,1,'M'),F/10000,1,'Y')
FROM (SELECT CONVERT(CHAR, CAST('1/2/3' AS DATETIME),12)) D(F)
16 окт 19, 09:52    [21995167]     Ответить | Цитировать Сообщить модератору
 Re: Одно и тоже преобразование в дату работает на одном сервере,но выдает ошибку на другом  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
rumka,

если вы не можете изменить передаваемую строку в соответствии с ISO ГГГГММДД, то указывайте явно контекст языка, в котором должно выполняться преобразование даты: SET LANGUAGE ... (обязательно прочтите справку).
16 окт 19, 12:10    [21995336]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить