Есть ли такая вещь, как пустая дата в C # - PullRequest
2 голосов
/ 20 декабря 2011

Я пытаюсь ввести дату в базу данных Oracle. Когда-нибудь это значение будет нулевым. Таким образом, в функции, которую я пишу, мне нужен способ передать это нулевое значение. Я передаю эту дату в качестве параметра для хранимой процедуры. Этот параметр может быть нулевым. Я использую Oracle.DataAccess DLL, чтобы заставить эту вещь работать. Если это действительно нуль, я думаю просто добавить пустую переменную. Как вы думаете, это будет работать ??? Вот как я сейчас настраиваю этот сценарий ...

cmd.Parameters.Add("ACTIVE_DATEIn", DateTime.Parse(ActiveDate));
conn.Open();
outcome = cmd.ExecuteNonQuery();

Active Date - возможная нулевая переменная, которую я собираюсь передать. Очевидно, что вы не можете конвертировать нулевое значение в дату Time. Что бы вы, ребята, предложили сделать?

Ответы [ 4 ]

8 голосов
/ 20 декабря 2011

Поскольку DateTime является struct, оно не может содержать значение null.

Некоторые люди используют DateTime.MinValue для хранения нулевого значения. Возможно, лучшим подходом было бы сделать ActiveDate a DateTime? вместо

.

Обновление:

Вы также можете попробовать что-то вроде:

cmd.Parameters.Add("ACTIVE_DATEIn", (ActiveDate == null ? OracleDate.Null : OracleDate.Parse(ActiveDate)));
3 голосов
/ 20 декабря 2011

Вы можете заставить DateTime реализовать INullable, поместив ? после типа.

DateTime? date;

Что, конечно, эквивалентно

Nullable<DateTime> date;
1 голос
/ 20 декабря 2011

Возможно, вам придется использовать DBNull.Value в том случае, если ваш ActiveDate представляет собой ноль.

1 голос
/ 20 декабря 2011

Вы можете использовать DateTime.MinValue вместо нуля или сделать свой объект DateTime обнуляемым.

...