Подтвердить что ты не робот

Установите пустую переменную DateTime

Я бы объявил пустую переменную String следующим образом:

    string myString = string.Empty;

Есть ли эквивалент для переменной DateTime?

Обновление:

Проблема заключается в том, что я использую этот параметр "DateTime" как параметр для "StoredProcedure" в SQL. Например:

    DateTime? someDate = null;
    myCommand.Parameters.AddWithValue("@SurgeryDate", someDate);

Когда я запускаю этот код, возникает исключение, говорящее мне, что "StoredProcedure" ожидает параметр @SurgeryDate. Но я это предоставил. Любая идея почему?

4b9b3361

Ответ 1

Так как DateTime - тип значения, вы не можете назначить ему null, но точно для этих случаев (отсутствие значения) Nullable<T> - используйте вместо этого значение nullable DateTime:

DateTime? myTime = null;

Ответ 2

Нет. У вас есть 2 варианта:

DateTime date = DateTime.MinValue;

Это работает, когда вам нужно что-то делать за каждый X промежуток времени (так как вы всегда будете над MinValue), но на самом деле могут вызывать тонкие ошибки (например, использование некоторых операторов без первой проверки, если вы не MinValue), если вы не будете осторожны.

И вы можете использовать Nullable:

DateTime? date = null;

Это хорошо и позволяет избежать большинства проблем при введении только 1 или 2.

Это действительно зависит от того, чего вы пытаетесь достичь.

Ответ 3

Вы можете установить для переменной DateTime значение "1/1/0001 00:00:00", но сама переменная не может быть нулевой. Чтобы использовать этот MinTime:

DateTime variableName = DateTime.MinValue;

Ответ 4

Возможно, вы захотите использовать дату и время с нулевым значением. Datetime? someDate = null;

В таких случаях вы можете найти экземпляры людей, использующих DateTime.Max или DateTime.Min, но я очень сомневаюсь, что вы хотите это сделать. Это приводит к ошибкам с краевыми случаями, более трудному для чтения и т.д.

Ответ 5

Используемый вами метод (AddWithValue) не преобразует значения null в значения NULL базы данных. Вы должны использовать DBNull.Value:

myCommand.Parameters.AddWithValue(
    "@SurgeryDate", 
    someDate == null ? DBNull.Value : (object)someDate
);

Это будет передавать значение someDate, если оно не является null или DBNull.Value иначе. В этом случае правильное значение будет передано в базу данных.

Ответ 6

Или:

DateTime dt = new DateTime();

или

DateTime dt = default(DateTime);

Ответ 7

A string - последовательность символов. Поэтому имеет смысл иметь пустой string, который представляет собой просто пустую последовательность символов.

Но DateTime - это просто одно значение, поэтому не имеет смысла говорить о "пустом" DateTime.

Если вы хотите представить концепцию "no value", представленную как null в .Net. И если вы хотите использовать это со значениями типов, вам нужно явно сделать их нулевыми. Это означает либо использование Nullable<DateTime>, либо эквивалент DateTime?.

DateTime (как и все типы значений) также имеет значение по умолчанию, которое присваивается неинициализированным полям, и вы также можете получить его с помощью new DateTime() или default(DateTime). Но вы, вероятно, не хотите его использовать, поскольку он представляет собой действительную дату: 1.1.0001 0:00:00.

Ответ 8

Нет такой вещи, как пустая дата как таковая, вы имеете в виду что-то вроде:

DateTime? myDateTime = null;

Ответ 9

Вариант 1: Использовать нулевую дату DateTime?

Вариант 2: Использовать DateTime.MinValue

Лично я бы предпочел вариант 1.

Ответ 10

Если вы установите дату на

DateTime dNewDate = new DateTime();

Значение установлено на {1/1/0001 12:00:00 AM}