yyyymmddhhmmss year today now new fff c# datetime

c# - year - ¿Cómo convertir sqldatetime.minvalue a datetime?



new datetime c# (3)

¿Alguna razón para no usar el operador de conversión explícito ?

DateTime dt = (DateTime) SqlDateTime.MinValue;

Funciona para mi:

using System; using System.Data.SqlTypes; class Test { static void Main() { DateTime dt = (DateTime) SqlDateTime.MinValue; Console.WriteLine(dt); } }

Parece que no puedo convertir un sqldatatime.minvalue en un objeto de fecha y hora.

Lo intenté:

Datetime dt = Convert.ToDateTime(SqlDateTime.MinValue);

Eso obviamente no funcionó.


Las respuestas que ha recibido le han mostrado dos formas diferentes de convertir el valor. Una es usar una conversión explícita definida para SqlDateTime a DateTime , la otra es acceder a la propiedad .Value en la instancia de SqlDateTime , que devuelve una DateTime .

var date = theSqlDate.Value; // via property var date = (DateTime)theSqlDate; // via explicit conversion

Hay concesiones que vale la pena considerar. SqlDateTime admite el concepto de valores nulos en la base de datos (DBNull, referenciado por otra respuesta ahora eliminada) a través del valor SqlDateTime.Null . Si accede a la propiedad Value en una instancia "nula", se encontrará con una SqlNullValueException . Por otro lado, una conversión explícita a DateTime resulta en {January 1, 1900 12:00:00 AM} . Ninguno de estos resultados puede ser deseado en su código. Sobrescribir una entrada nula válida en la base de datos con un valor predeterminado no nulo puede ser tan malo como obtener una excepción en tiempo de ejecución.

Si tiene una columna anulable en la base de datos, y si está trabajando con SqlDateTime , es posible que deba probar y tratar a SqlDateTime.Null explícita de SqlDateTime.Null diferente, y entonces no importa qué enfoque adopte para convertir otros valores.

DateTime? date; if (theSqlDate.Equals(SqlDateTime.Null)) date = null else date = theSqlDate.Value; // or (DateTime)theSqlDate;


No hay necesidad de convertir. SqlDateTime tiene una propiedad de Value que devuelve un DateTime .

DateTime dt = SqlDateTime.MinValue.Value;