Получение переполнения SqlDateTime. исключение в 2008 г.

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

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

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

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


person shoab    schedule 12.05.2011    source источник
comment
Как вы называете это sp из кода?   -  person Arthur    schedule 12.05.2011


Ответы (2)


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

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

person Damien_The_Unbeliever    schedule 12.05.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).

person Ed Harper    schedule 12.05.2011
comment
Показанный вами пунктирный формат даты небезопасен, если используется британский язык. Это будет с T между датой и временем (вместо пробела) - person Damien_The_Unbeliever; 12.05.2011
comment
есть изменения в формате даты на ОС живого сервера на MM/dd/yyyy, но по-прежнему возникает та же ошибка - person shoab; 16.05.2011
comment
@shoab - вам также необходимо проверить, что учетные записи, под которыми выполняется подключение к SQL-серверу. Вы также можете попробовать установить формат даты в соединении (перед выполнением каких-либо команд) - SET DATEFORMAT mdy - person Ed Harper; 16.05.2011