Я извлекаю строку в формате даты (гггг-мм-дд), затем преобразовываю ее в DateTime
и вставляю в базу данных с помощью хранимой процедуры. Но я продолжаю получать
System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
Столбец в моей таблице имеет тип date
.
Я преобразую свою строку (например, 2016-01-15
), вызывая DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null)
, а затем беру это значение и вставляю его в качестве параметра в свою StoredProcedure и выполняю процедуру.
Но при использовании отладчика я вижу, что возвращаемое значение на самом деле является DateTime в формате yyyy-MM-dd HH:mm:ss
.
это пример того, как выглядит код
string expirationDate = GetDate();
DateTime date = DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null);
ExecuteMyStoredProc(date);
DateTime
s не имеют формат. Они отсчитывают 100-наносекундные интервалы с полуночи 01.01.0001. Когда вы говорите, что на самом деле это DateTime в форматеyyyy-MM-dd HH:mm:ss
. на самом деле вы говорите, что когда что-то (отладчик, окно вывода, элемент управления и т. д.) преобразуетDateTime
в строку, чтобы фактически отобразить ее вам, используется определенный формат. Это артефакт того, что выполняет преобразование, а не нечто, присущее значениюDateTime
. - person Damien_The_Unbeliever   schedule 28.01.2014