SET DATEFORMAT + битрикс + поддержка = убиться и не жить

E_u_g_e_n_E

Добрый день!На Битриксоидном (чтоб ему неладно) портале вылезает вот такая ошибка
MSSQL Query Error:

UPDATE b_bp_workflow_instance SET 	OWNER_ID = '4ba72d6fe010f5.07950460', 	OWNED_UNTIL = '2010-03-22 11:47:23' WHERE ID = '4ba71cdd338686.85023796'
#<b>22008</b> [Microsoft][ODBC SQL Server Driver][SQL Server]Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона.
Тех поддержка пишет
10:51:37: Добрый день!Пожалуйста, установите в локале на сервере баз данных формат даты "2010-02-19 14:16:35". Проблема решилась?10:52:01: это ответ битриксоидов
Что они имели ввиду?SET DATEFORMAT ymd; ??Можно это как то для всей БД сделать или автоматом чтобы для пользователя подцеплялось от имени которого работает портал....?С уважением, Лобанов Евгений
7 ответов

E_u_g_e_n_E


E_u_g_e_n_E

а почему строкой дату передаёте? используйте CONVERT()


E_u_g_e_n_E

а почему строкой дату передаёте? используйте CONVERT()
Напишите это в Битрикс.p/s/никогда не покупайте это...


E_u_g_e_n_E

тут
Ну как бы все понятно
- воспользоваться настройкой SET DATEFORMAT. Но она действует только для текущего коннекта и на время коннекта- Задать подходящий language для используемого sql login-а. С помощью системной процедуры sp_defaultlanguage или утилиты Enterprise Manager.Это ведет к неявному выполнению SET DATEFORMAT при установлении коннекта. Правда эта установка будет влиять и на результаты некоторых других функций. Например, на DATENAME, возвращающую символьное именование даты
воспользоваться настройкой SET DATEFORMAT
ну если окошко в менеджмент студии открыть и вписать туда SET DATEFORMAT ymd и исполнить запрос то все работает. Как теперь это автоматом исполнять при подключении битриксовского юзера?
Задать подходящий language
Как то не кашерно искать локаль там где ymd. Сейчас русская стоит и у неё mdy. Если тока свой язык создать...Кто-нибудь так делал. Что-то извратом каким то попахивает


E_u_g_e_n_E

Попробуйте поставить английский
SET LANGUAGE russian
DBCC USEROPTIONS
print CAST('2010-03-22 11:47:23' AS DATETIME)
GO
SET LANGUAGE english
DBCC USEROPTIONS
print CAST('2010-03-22 11:47:23' AS DATETIME)
GO
-------------------------------американский форум: вы задаете вопрос - вам дают ответеврейский форум: вы задаете вопрос - вам задают встречный вопросрусский форум: вы задаете вопрос и вам долго объясняют, почему вы такой му**к.


E_u_g_e_n_E

Попробуйте поставить английский
SET LANGUAGE russian
DBCC USEROPTIONS
print CAST('2010-03-22 11:47:23' AS DATETIME)
GO
SET LANGUAGE english
DBCC USEROPTIONS
print CAST('2010-03-22 11:47:23' AS DATETIME)
GO
-------------------------------американский форум: вы задаете вопрос - вам дают ответеврейский форум: вы задаете вопрос - вам задают встречный вопросрусский форум: вы задаете вопрос и вам долго объясняют, почему вы такой му**к.
Поменял. Вроде как заработало. Сейчас потестим, чтобы в других местах не отвалилось....Хотя странно все это. Мы ж русские. Ставить англ локаль, чтобы удовлетворить битрикс. Не айс....


E_u_g_e_n_E

не айс в том что будут january вместо январь и соответственно серверные ошибки на английском