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

MinDateTime Min и Max Values ​​в С#

В С# есть a SqlDateTime.MinValue и SqlDateTime.MaxValue, но я не могу найти его для типа данных SmallDateTime из SQL Server.

var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);

Есть ли один или мне нужно реализовать это самостоятельно?

4b9b3361

Ответ 1

В System.Data.SqlTypes нет эквивалента smalldatetime. Также нет эквивалента для нового типа datetime2. Поэтому я не ожидал бы констант min-max для этих типов в платформе .NET.

Но типы хорошо документированы на MSDN:

Данные о дате и времени с 1 января, С 1753 по 31 декабря 9999 года, до точность одной трехсотой второй (эквивалент 3,33 миллисекунды или 0,00333 секунды). Значения округлены до .000,.003 или .007 секунд, как показано в таблице.

Таким образом, вы можете легко определить свои собственные константы min-max.

Ответ 2

Почему бы не использовать метод расширения?

public static class DateTimeExtensions
{
    public static DateTime SmallDateTimeMinValue(this DateTime sqlDateTime)
    {
        return new DateTime(1900, 01, 01, 00, 00, 00);
    }
    public static DateTime SmallDateTimeMaxValue(this DateTime sqlDateTime)
    {
        return new DateTime(2079, 06, 06, 23, 59, 00);
    }

}


DateTime date = DateTime.Now;
Console.WriteLine("Minvalue is {0} ", date.SmallDateTimeMinValue().ToShortDateString());

По общему признанию, это было бы неплохо для свойств расширения, но они еще не существуют.

Ответ 3

В моих целях я использовал простой статический вспомогательный класс:

public static class SqlSmallDateTime
{
    public static readonly SqlDateTime MinValue = 
        new SqlDateTime(new DateTime(1900, 01, 01, 00, 00, 00));

    public static readonly SqlDateTime MaxValue = 
        new SqlDateTime(new DateTime(2079, 06, 06, 23, 59, 00));
}

Ответ 4

Так как SQLDateTime отображает как datetime, так и smalldatetime, я думаю, вам нужно будет сделать это вручную.

Ответ 5

Мин. значение 1900-01-01 00:00:00

Максимальное значение 2079-06-06 23:59:00

Ответ 6

Вам придется использовать свои собственные константы. Казалось бы, пространство имен System.Data.SqlTypes является неполным без SqlSmallDateTime, но на самом деле это не так. Цель этого пространства имен - предоставить классы, которые предотвращают ошибки преобразования типов.

Пространство имен System.Data.SqlTypes предоставляет классы для собственных типов данных в SQL Server 2005. Эти классы обеспечивают более быструю и быструю альтернативу типам данных, предоставляемым средой CLR общего времени .NET Framework. Использование классов в этом пространстве имен помогает предотвратить ошибки преобразования типов, вызванные потерей точности. Поскольку другие типы данных преобразуются в и из SqlTypes за кулисами, явное создание и использование объектов в этом пространстве имен также дает более быстрый код.

MSDN

Поскольку для этой цели достаточно SqlDateTime, не предоставляется SqlSmallDateTime.