Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с немецким MS SQL 2000 (datetime format) / 7 сообщений из 7, страница 1 из 1
26.12.2001, 17:29
    #32019895
Student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
При работе MS-SQL Server 2000 под Win 2000 Server с немецкими настройками даты в связке с одной американской прогой (Visual Manufacturing, далее VM) возникают глюки при работе с datetime. VM шлет запросы, где в качестве условий стоят даты в ANSI-формате, а MSSQL возвращает на это ошибку 242: Bei der Konvertierung eines char-Datentyps in einen datetime-Datentyp liegt der datetime-Wert außerhalb des gültigen Bereichs.
Причина понятна - немецкий MS SQL читает сначала день, потом месяц, а VM ему подсовывает в обратном порядке. Причем в запросе на выборку, так что через триггеры проблема не решается. Дата жестко установлена в VM, никаких настроек там нет, поэтому копать надо, ИМХО, со стороны MS SQL. Интуиция подсказывает, что это должно быть что-то простое... Или надо рекомендовать английский дистрибутив MS SQL?
...
Рейтинг: 0 / 0
27.12.2001, 07:29
    #32019908
Проблема с немецким MS SQL 2000 (datetime format)
1. См. в BOL: SET DATEFORMAT

2. Попробуй поиграться с галочкой "Use internatioanl setting" в "Client Network Utilities".
...
Рейтинг: 0 / 0
27.12.2001, 09:22
    #32019914
Oleg Martynov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
И ещё, попробуйте посмотреть профилировщиком, в каком формате клиент посылает дату. Результат м.б. неожиданным. Так, в 7.0 при установке Use international setting клиент (Win98hec) посылает не "21.10.2000", как, видимо, ожидается, а "21 Окт 2000" (именно по-русски)!!!
...
Рейтинг: 0 / 0
27.12.2001, 12:54
    #32019944
Student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
Спасибо! Через Profiler удалось отловить следуещее:
SELECT R.STATUS, ISNULL ( R.REQUIRED_DATE, CONVERT ( DATETIME, '3999-12-31' ) ) FROM REQUIREMENT R
В Query Analyser при его выполнении возникает та же ошибка 242. Зато работает (в QA) так:

SET DATEFORMAT mdy
SELECT R.STATUS, ISNULL ( R.REQUIRED_DATE, CONVERT ( DATETIME, '3999-12-31' ) ) FROM REQUIREMENT R

Чувствую, что решение где-то близко. Можно ли в MSSQL 2000 отследить обращение к таблице и для соответствующего коннекшн установить на лету DATEFORMAT? Или можно где-то вызвать SET DATEFORMAT, и он будет действовать для всех последующих коннекшнов, пока не встретится новый SET DATEFORMAT?
...
Рейтинг: 0 / 0
28.12.2001, 13:29
    #32020030
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
У меня тоже такое ощущение. И сводится оно к тому, что некорректная дата формируется клиентской прогой... Возможно, нужно установить национальные настройк на компе, где она установлена, в американоподобные, тогда заработает. Ежели же этого делать нельзя из-за другой программы, то можешь горячо поблагодарить разработчиков таких программ...
...
Рейтинг: 0 / 0
10.01.2002, 14:28
    #32020469
Student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
Приемлемое решение так и не найдено. Можно изменить для пользователя стандартный язык на английский, но это подходит не всем - пользователь может работать с другими базами, где ему нужен немецкий как стандартный. Можно в немецком языке в syslanguages заменить dateformat с dmy на mdy, но опять же другим базам на этом сервере это может не понравиться. ODBC - настройки в данном случае не помогают, т.к. дата передается от клиента в виде строки, а не даты, а сервер уже сам преобразовывает в дату, при этом и происходит ошибка.

Подскажите, куда копать, даже если это кажется трудным - у время есть разбираться, и самому интересно...
...
Рейтинг: 0 / 0
10.01.2002, 15:32
    #32020478
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с немецким MS SQL 2000 (datetime format)
SELECT CONVERT (DATETIME, '39991231' )
работает правильно при любой установке SET DATEFORMAT

IMHO надо обращаться к производителю программы и требовать внесения изменения, если это конечно возможно по вашему лицензионному соглашению.
Или хотя бы сообщить им об этом, возможно имеются какие-нибудь патчи/апгрейды
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с немецким MS SQL 2000 (datetime format) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]