Проблема с параметром sql datetime - PullRequest
0 голосов
/ 31 декабря 2010

Привет всем,

Я передаю параметр даты следующим образом:

 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)

Ответы [ 3 ]

2 голосов
/ 31 декабря 2010

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

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

или

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

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

0 голосов
/ 10 апреля 2013

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

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

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

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

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

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

0 голосов
/ 31 декабря 2010

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

Также формат даты должен быть:

date.ToString("yyyy-MM-dd HH:mm:ss:fff")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...