Как правильно поддерживать английские и французские даты с VB6 и SQL Server? - PullRequest
0 голосов
/ 21 июля 2009

Мы добавляем поддержку французского в старое приложение 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, и это, похоже, не помогло (но я могу не знать, что я делаю.)

Я считаю, что «наиболее правильным» решением является форматирование всех числовых дат с использованием ГГГГММДД. Это правильно?

(приложение никогда не нужно будет переносить на другие языки, кроме английского и французского.)

1 Ответ

1 голос
/ 21 июля 2009

Существует два однозначных формата даты, которые вы можете использовать с SQL Server. ГГГГММДД является одним из них. Вещи могут стать немного хитрыми, имея дело с другими языками. В SQL Server вы можете установить разные языки для каждого входа в систему. Это язык по умолчанию для входа в систему, который определяет, как даты интерпретируются. К сожалению, язык по умолчанию не обязательно соответствует региональным настройкам клиентского компьютера.

Вот почему я не позволяю пользователям вводить даты в текстовые поля. Вместо этого я даю им элемент управления DatePicker, который выполняет всю мою проверку для меня. Элемент управления DatePicker имеет свойство .Value, которое является типом даты Date. Затем при отправке дат на SQL Server вы просто используете функцию «Формат» (со стилем YYYYMMDD).

Для получения дополнительной информации об этом: Установка стандартного формата даты для SQL Server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...