Проверка правильности даты в диапазоне SqlDbType.DateTime - PullRequest
6 голосов
/ 02 ноября 2010

Я хочу проверить значение System.DateTime, прежде чем добавить его в качестве параметра в мой экземпляр SqlCommand.

Документация MSDN для перечисления SqlDbType гласит:

Дата и время в диапазоне значений с 1 января 1753 года по 31 декабря 9999 года с точностью 3,33 миллисекунды. Для проверки значения я использую

public readonly DateTime SqlDateTimeMin = new DateTime(1753, 1, 1);
public readonly DateTime SqlDateTimeMax = new DateTime(9999, 12, 31);

if (value < SqlDateTimeMin || value > SqlDateTimeMax)
    // Validation check fails
else
    // Validation check succeeds

Это лучший способ? Есть ли альтернатива жесткому кодированию этих минимальных и максимальных значений?

Ответы [ 3 ]

19 голосов
/ 02 ноября 2010

Как насчет SqlDateTime.MinValue и SqlDateTime.MaxValue ?

Примечание: это SQL тип min / max, а не типы .net, как в предыдущих 2 ответах: -)

0 голосов
/ 02 ноября 2010

Я думаю, что реальный вопрос в том, почему ваши пользователи вводят даты за пределами этого диапазона? Ваш код для проверки правильности, но я бы посоветовал, что это большая проблема в пользовательском интерфейсе, где люди могут вводить фиктивные даты.

0 голосов
/ 02 ноября 2010
SqlDateTime.MaxValue = 12/31/9999
SqlDateTime.MinValue = 1/1/1753

Ваш код будет выглядеть следующим образом:

if (value < SqlDateTime.MinValue || value > SqlDateTime.MaxValue)

Я думаю, что это отвечает вашим потребностям лучше, чем DateTime.MaxValue и DateTime.MinValue, потому что DateTime.MinValue не 1/1/1753, а скорее1/1/0001.

...