2010-11-10 20 views
16

En C# hay SqlDateTime.MinValue y SqlDateTime.MaxValue, pero no puedo encontrar uno para el tipo de datos SmallDateTime de SQL Server.SmallDateTime Valores mínimos y máximos en C#

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

¿Hay uno o tengo que implementar esto por mi cuenta?

Respuesta

5

No hay smalldatetime equivalente en System.Data.SqlTypes. Tampoco hay un equivalente para el nuevo tipo datetime2. Por lo tanto, no esperaría las constantes min-max para esos tipos en el marco .NET.

Sin embargo, los tipos están bien documentados en MSDN:

Fecha y hora de datos a partir del 1 de enero de 1753 hasta el 31 de diciembre de 9999, a un precisión de un tres centésima de segundo (equivalente a 3,33 milisegundos o 0,00333 segundos). Los valores se redondean a incrementos de .000, .003 o .007 segundos, como se muestra en en la tabla.

Para que pueda definir fácilmente sus propias constantes min-max.

+3

'smalldatetime' sólo funciona hasta el 6 de junio de, 2079, de acuerdo con la documentación que ha enlazado. – Hannele

2

Desde SQLDateTimemaps to bothdatetime y smalldatetime, supongo que tendrá que hacer eso manualmente.

16

¿Por qué no utilizar un método de extensión?

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()); 

Es cierto que sería bueno para las propiedades de extensión, pero aún no existen.

2

valor Min 1900-01-01 00:00:00

valor

Max 2079-06-06 23:59:00

1

Usted tendrá que utilizar sus propias constantes. Parecería que el espacio de nombres System.Data.SqlTypes está incompleto sin SqlSmallDateTime, pero ese no es el caso. El objetivo de ese espacio de nombres es proporcionar clases que eviten los errores de conversión de tipo.

El espacio de nombres System.Data.SqlTypes ofrece clases de tipos de datos nativos dentro de SQL Server 2005. Estas clases proporcionan un seguro, más rápido alternativa a los tipos de datos proporcionados por el Common Language Runtime de .NET Framework (CLR). El uso de las clases en este espacio de nombres ayuda a prevenir los errores de conversión de tipo causados ​​por la pérdida de precisión. Debido a que otros tipos de datos se convierten en y desde SqlTypes detrás de escena, la creación y el uso explícitos de objetos dentro de este espacio de nombres también produce un código más rápido.

MSDN

Debido SqlDateTime es suficiente para ese propósito, se proporciona no SqlSmallDateTime.

3

Para mis propósitos que utiliza un simple clase auxiliar estática:

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)); 
} 
Cuestiones relacionadas