Мы добавляем поддержку французского в старое приложение VB6.
Первоначальный разработчик использовал смесь форматов даты при записи в базу данных, но SQL, похоже, не возражал, поскольку все было на английском языке. (31 марта 2009 или 2009-03-31 и т. Д.)
Когда вы пытаетесь запустить приложение на французском компьютере, вы получаете:
[- 2147217913] [Microsoft] [Драйвер ODBC SQL Server] [SQL Server] Синтаксическая ошибка при преобразовании символьной строки в тип данных smalldatetime.
Я считаю, что проблема в том, что SQL выглядит как set xxxx = '31 -mars-2009 ', а SQL-сервер, который мы имеем, может понимать английский, но не французский.
Первоначальное исправление состояло в том, чтобы использовать Формат (строка, «короткая дата»), который, казалось, исправлял это, но я не думаю, что это исправляет это 100% времени. (Примечание: я думаю, что короткая дата работает правильно, было текстовое поле, которое нужно было преобразовать в строку.)
Я играл с SET LANGUAGE, и это, похоже, не помогло (но я могу не знать, что я делаю.)
Я считаю, что «наиболее правильным» решением является форматирование всех числовых дат с использованием ГГГГММДД. Это правильно?
(приложение никогда не нужно будет переносить на другие языки, кроме английского и французского.)