Мы долгое время использовали следующий SQL-запрос в программе WinForms без каких-либо проблем, до тех пор, пока некоторые конечные пользователи не будут обновлены до Windows 10.Запрос MSSQL больше не работает с клиентом Windows 10: преобразование типа данных varchar в тип данных datetime привело к значению вне диапазона
Они неожиданно получают исключение: «ОШИБКА [22007] [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Преобразование типа данных varchar в тип данных datetime привел к значению вне диапазона. "
Эта ошибка была опубликована здесь ранее, но я не нашел сообщений, связанных с обновлением Windows 10.
Запрос направлен на SQL Server 2012, используя Native Client 11. Он работает на окнах 7 и 8, но бросает исключение в Windows 10:
SELECT DISTINCT tblEmployee.EmployeeID, tblEmployee.Lastname, (COALESCE(tblEmployee.Firstname, '') + ' (' + COALESCE(tblEmployee.EmployeeIDText, '') +')') AS Firstname
FROM tblEmployee
LEFT JOIN tblAssignmentService ON tblEmployee.EmployeeID = tblAssignmentService.EmployeeID
WHERE tblAssignmentService.ServiceDate >= '2015-08-31 00.00.00'
AND tblAssignmentService.ServiceDate < '2015-09-07 00.00.00'
ORDER BY tblEmployee.Lastname;
Единственное место, где используются DateTime полей в предложении Where, и запрос отлично работает с той же БД с клиентом Windows 8. Оба клиента запускают версии Einglish Windows. Еще одно интересное замечание заключается в том, что запрос принимается из Microsoft SQL Management Studio на компьютере под управлением Windows 10. Но не через родной клиент. Даты, используемые в фильтре, создаются в нашей программе через графический интерфейс.
Есть ли у кого-то другие странные вещи с собственным клиентом в Windows 10, или у кого-нибудь есть предложение, как эта проблема может быть решена?
Другая датаформат 'SET DATEFORMAT' –
lad2025
Вы уверены, что английская версия Windows имеет один и тот же язык, например, 'US' vs' EN' и date 'yyyy/dd/mm' vs' yyyy/mm/dd'? – lad2025
Я не проверял для US - EN, но изменение этого не изменило поведения. Исследование вашего первого комментария, Lad2025, я заметил, что это временная часть DateTime, которая вызывает проблемы. В нашем коде мы отформатируем это с помощью команды ToString («yyyy-MM-dd HH: mm: ss»). Который почему-то был изменен на «yyyy-MM-dd HH.mm.ss» на машине Windows 10. Я постараюсь ответить @ JonSkeet на следующее сообщение в качестве решения tomorow и опубликовать послесловие обновления: http://stackoverflow.com/questions/18874102/net-datetime-tostringmm-dd-yyyy-hhmmss-fff-resulted -в-что-то типа –