MinDateTime Min и Max Values в С#
В С# есть a SqlDateTime.MinValue
и SqlDateTime.MaxValue
, но я не могу найти его для типа данных SmallDateTime
из SQL Server.
var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);
Есть ли один или мне нужно реализовать это самостоятельно?
Ответы
Ответ 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.