2008-11-12 2 views
0

Со ссылкой на Problem with date day/month reversing on saveПроблема с региональными настройками где-

Я также отметил, что даже установка Session.LCID на странице сам не делает никакой разницы, что так всегда.

Каким образом среда может быть такой, чтобы между тестом и живым сайтом asp в реальном времени были реверсированы даты, введенные через SQL, но не в тесте.

Оба имеют IUSR установлен в Великобритании, как все пользователи установили в Великобритании, оба имеют SQL счета установлен на американском английском языке, и оба имеют Session.LCID установлен в 3081 (австралийский английский)

Почему тест работает msgstr "Вставить в datecolumn значения '01/03/2008 'и вставить '01/03/2008' и вживую вставить '03/01/2008 '"

Установки выглядят полностью идентичными. Это должно быть выяснено, скоро я испугаюсь, что мы никогда не узнаем. Проблема в том, что мы не можем изменять код или что-то еще. Все, что я могу сделать, это расследовать и рассказать им причину. Но я не могу найти его!

Это VB6/ASP, и это заставляет меня делать лалли.

Доступ к базе данных осуществляется через системный DSN, настроенный на использование правильной учетной записи SQL.

Какая дополнительная информация может вам понадобиться.

ответ

1

В SQL Server Management Studio в разделе «Безопасность - логины» щелкните правой кнопкой мыши пользователя, с которым вы подключаетесь, и нажмите «Свойства». В нижнем поле со списком «Язык по умолчанию», измените это на «Британский английский» (не просто «английский»).

sp_configure 'default language' устанавливает язык по умолчанию для вновь созданных логинов, и именно это хранится в sysconfigures.

Я предполагаю, что язык не задан в строке запроса?

+0

Проблема в том, что он установлен на английском языке на тесте, который я знаю, это США, и он настроен на английский на Live. Эти две среды должны быть одинаковыми, но они ведут себя по-разному, и мне нужно выяснить, почему. Я не могу вносить изменения. – Robert 2008-11-12 14:12:20

+0

Ну, если он установлен на американском английском на тесте, это должно быть реверсирование дат ... так что это тест, это неправильно, верно? Пробег SELECT @@ LANGUAGE SELECT CAST ('01/02/03 'AS datetime) от Management Studio. – Sunlight 2008-11-12 14:14:45

0

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

Вы можете использовать YYYY-MM-ДДTчч: ми: СС.ммм или YYyyMmDd чч: ми: СС.ммм

SQL Server никогда не будет неправильно интерпретировать даты, если вы используете один из 2-х форматов, перечисленных выше.

В vb вы можете использовать следующую функцию формата для форматирования даты в формате неопределенной даты, который SQL Server никогда не будет неправильно интерпретировать.

Format(YourDateVariable, "yyyymmdd hh:nn:ss")