SQL Server Update DateTime типа до нуля - PullRequest
0 голосов
/ 16 декабря 2011

Поскольку в пятницу мой мозг, должно быть, работал со сбоями.

Я пытаюсь обновить столбец типа DateTime с хорошим OleDb, обновление всегда запускается (изменяя другиезначения столбца в той же строке), но по какой-то причине столбец DateTime не может быть установлен в значение null.

Ofc столбец допускает значение NULL.

Я использую конструктор OleDbParameter, чтобы добавить новыйПараметром для моей команды может быть параметр, который не запускается, если значение равно null?

Я пробовал SqlDateTime.Null, DbNull.Value и null в качестве параметра, но ничто не устанавливает значение в null, этооставляет его нетронутым или устанавливает его для нашего любимого 1900-00-01.

любые советы и рекомендации приветствуются

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

вы хотите использовать DBNull.Value

так же, как предыдущие комментарии, вы могли бы сделать что-то вроде DateTime? myDate = null;

0 голосов
/ 16 декабря 2011

Проблема в том, что, если вы не предпримете конкретные действия, DateTime будет представлен как DateTime.MinValue. Поэтому, если вы хотите установить нулевое значение в БД, вам нужно проверить значение и, если MinValue, вместо этого отправить DBNull.

На самом деле мы используем метод, чтобы получить значение как дату или время, равное нулю, если дата имеет минимальное значение:

function object DateToDB(DateTime testDate) 
{
    if (testDate == DateTime.MinValue)
    {
        return DBNull.Value;
    } else 
    {
        return testDate;
    }
}

Этот метод затем используется для присвоения значения параметра.

...