2010-12-31 2 views
0

HI все,SQL проблема параметров даты и времени

Я передаю параметр даты, как например:

DateTime date = DateTime.Now; 
    date.ToString("YYYY-MM-DD 00:00:00:000"); 

Но получить эти исключения:

System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753  12:00:00 AM and 12/31/9999 11:59:59 PM. at System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) at System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime value) 
+0

что это за C#? tag it plz –

+0

http://stackoverflow.com/questions/468045/error-sqldatetime-overflow-must-be-between-1-1-1753-120000-am-and-12-31-9999 –

+0

как вы проходите параметры; используя верификацию командного объекта? – Binil

ответ

0

параметр не передается здесь , образец кода, который вы опубликовали, является неполным, просмотрев полученный результат SqlTypeException

Также формат даты должен быть следующим:

date.ToString("yyyy-MM-dd HH:mm:ss:fff") 
+0

Philip Fourie-> Привет, все еще получаю это исключение – Jims

2

Долгота: 10 секунд между миллисекундами и секундами. Строка формата чувствительна к регистру. Попробуйте:

date.ToString("yyyy-MM-dd") 

или

date.ToString("yyyy-MM-dd HH:mm:ss.fff") 

спросить также себя, действительно ли вам нужно преобразовать аргументы в строки. Он пахнет странно, и это может быть необязательно. Если вы хотите передать только дату, а не время, то передайте свойство Date объекта DateTime в качестве значения вашего параметра. Держите его строго типизированным, чтобы избежать проблем с SQL-инъекциями, производительности и преобразования типов.

0

Если вы пытаетесь игнорировать временную часть (следовательно, ваши нули) попробовать

date.ToString("yyyy-MMM-dd"); 

Если вы хотите время часть тоже ...

date.ToString("yyyy-MMM-dd hh:mm:ss.fff tt"); 

Примечание оба имеют 3 Ms для месяц, что делает их однозначными строками, которые SQL должен иметь возможность анализировать и не может неправильно интерпретировать.

Но почему бы просто не передать значение как объект даты, а не преобразовать в строку?

+0

Этот ответ в основном идентичен одному уже вывешенный. Зачем публиковать это через 2 года? – ErikE

+0

не проверял дату! На самом деле все по-другому. Каждый всегда настаивает на том, чтобы в течение нескольких месяцев было 2 символа. Используйте 3 символа, таким образом, это однозначно, если у вас обязательно есть строки. – Jezbers

+0

Упоминание чего-то в вашем ответе о том, почему вы добавили один дополнительный «М», было бы очень важным ... – ErikE

Смежные вопросы