valor tipo produjo intervalo fuera datos convert conversión c# sql

tipo - Valores mínimos y máximos de SmallDateTime en C#



smalldatetime sql server (6)

En C # hay un SqlDateTime.MinValue y SqlDateTime.MaxValue , pero no puedo encontrar uno para el tipo de datos SmallDateTime de SQL Server.

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

¿Hay uno o necesito implementarlo yo mismo?


¿Por qué no usar 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 esas no existen todavía.


Dado que SQLDateTime asigna tanto a datetime como a smalldatetime , supongo que tendrá que hacerlo manualmente.


No hay un equivalente de smalldatetime en System.Data.SqlTypes . Tampoco hay un equivalente para el nuevo tipo datetime2 . Por lo tanto, no esperaría constantes mínimas y máximas para esos tipos en el marco .NET.

Pero los tipos están bien documentados en MSDN :

Datos de fecha y hora desde el 1 de enero de 1753 hasta el 31 de diciembre de 9999, con una precisión de una 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 la tabla.

Así que puedes definir fácilmente tus propias constantes mínimas y máximas.


Para mis propósitos utilicé una clase simple de ayuda 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)); }


Tendrás que usar tus propias constantes. Parece que el espacio de nombres System.Data.SqlTypes está incompleto sin SqlSmallDateTime , pero en realidad no es el caso. El propósito de ese espacio de nombres es proporcionar clases que eviten errores de conversión de tipo.

El espacio de nombres System.Data.SqlTypes proporciona clases para tipos de datos nativos dentro de SQL Server 2005. Estas clases ofrecen una alternativa más segura y rápida a los tipos de datos proporcionados por .NET Framework Common Language Runtime (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 ay desde SqlTypes detrás de escena, la creación y el uso explícitos de objetos dentro de este espacio de nombres también producen un código más rápido.

MSDN

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


Valor mínimo 1900-01-01 00:00:00

Valor máximo 2079-06-06 23:59:00