Получение переполнения SqlDateTime.исключение в 2008 году - PullRequest
0 голосов
/ 12 мая 2011

я передаю даты по умолчанию (начальная дата и конечная дата) в sp as ('1/1/1753 12:00:00 AM' & '12 / 31/9999 12:00:00 AM ').

Это работало нормально в 2005 году, но я получаю "переполнение SqlDateTime. Должно быть между 01.01.1753 12:00:00 и 31.12.9999 11:59:59 PM" исключение в 2008 году.

И поворот таков, что когда я запускаю sp из Management Studio, он работает нормально, но на живом сервере через веб-сайт выдает ошибку.

заранее спасибо

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Я бы согласился с Эдом Харпером, что проблема, скорее всего, связана с различиями языковых или языковых настроек в разных средах.Я бы не согласился с его исправлением.

Получите эти значения datetime в переменные DateTime как можно скорее и не рассматривайте их как строки.Т.е. сделать это на веб-сайте, а затем полагаться, например, на ADO.Net, чтобы правильно распределить значения даты и времени в SQL Server.Обновите хранимый процесс, чтобы ожидать, что параметры также будут иметь значения datetime - по сути, прекратите обрабатывать их как строки как можно раньше при обработке.

2 голосов
/ 12 мая 2011

Вероятно, это проблема с языковым стандартом, в котором установлена ​​ОС, или языковым стандартом, связанным с учетными записями пользователей, под которым выполняется код, поскольку различные языковые стандарты интерпретируют даты в формате, который вы предоставляете, либо как DD/MM/YYYY, либоMM/DD/YYYY

Лучший способ обойти проблему - использовать канонический формат даты - YYYY-MM-DDTHH:MM:SS AM/PM, YYYYMMDD HH:MM:SS AM/PM или YYYY-MM-DD HH:MM:SS(24h)

...