yyyy validar vacio tryparseexact enviar ejemplos convertir asignar c# sql datetime

c# - validar - Establecer una variable DateTime vacía



enviar null a datetime c# (11)

Declararía una variable String vacía como esta:

string myString = string.Empty;

¿Hay un equivalente para una variable ''DateTime''?

Actualización:

El problema es que utilizo este ''DateTime'' como un parámetro para ''StoredProcedure'' en SQL. P.ej:

DateTime? someDate = null; myCommand.Parameters.AddWithValue("@SurgeryDate", someDate);

Cuando ejecuto este código, una excepción queda atrapada diciéndome que ''StoredProcedure'' esperaba un parámetro ''@SurgeryDate''. Pero lo proporcioné. ¿Alguna idea de por qué?


Como DateTime es un tipo de valor, no puede asignarle un valor null , pero exactamente para estos casos (ausencia de un valor) se Nullable<T> . En su lugar, use un DateTime anular:

DateTime? myTime = null;


El .addwithvalue necesita dbnull. Podrías hacer algo como esto:

DateTime? someDate = null; //... if (someDate == null) myCommand.Parameters.AddWithValue("@SurgeryDate", DBnull.value);

o usa una extensión de método ...

public static class Extensions { public static SqlParameter AddWithNullValue(this SqlParameterCollection collection, string parameterName, object value) { if (value == null) return collection.AddWithValue(parameterName, DBNull.Value); else return collection.AddWithValue(parameterName, value); } }


El método que usó ( AddWithValue ) no convierte null valores null en nulos de la base de datos. Deberías usar DBNull.Value en DBNull.Value lugar:

myCommand.Parameters.AddWithValue( "@SurgeryDate", someDate == null ? DBNull.Value : (object)someDate );

Esto pasará el valor someDate si no es null , o DBNull.Value contrario. En este caso, el valor correcto se transferirá a la base de datos.


Es posible que desee utilizar un datetime nullable. Datetime? someDate = null;

Puede encontrar ejemplos de personas que usan DateTime.Max o DateTime.Min en tales casos, pero dudo mucho que quiera hacer eso. Conduce a errores con casos extremos, código que es más difícil de leer, etc.


No existe una fecha vacía per se, ¿te refieres a algo como:

DateTime? myDateTime = null;


No. Tienes 2 opciones:

DateTime date = DateTime.MinValue;

Esto funciona cuando necesita hacer algo cada X cantidad de tiempo (ya que siempre estará sobre MinValue ) pero en realidad puede causar errores sutiles (como el uso de algunos operadores sin verificar primero si no es MinValue ) si no tiene cuidado .

Y puedes usar Nullable :

DateTime? date = null;

Lo cual es bueno y evita la mayoría de los problemas al presentar solo 1 o 2.

Realmente depende de lo que estás tratando de lograr.


Opción 1: ¿usa un DateTime que se puede anular?

Opción 2: use DateTime.MinValue

Personalmente, preferiría la opción 1.


Puede configurar una variable DateTime para que sea ''1/1/0001 00:00:00'' pero la variable en sí no puede ser nula. Para obtener este MinTime, use:

DateTime variableName = DateTime.MinValue;


Si configura la fecha para

DateTime dNewDate = new DateTime();

El valor está establecido en {1/1/0001 12:00:00 AM}


Una string es una secuencia de caracteres. Por lo tanto, tiene sentido tener una string vacía, que es solo una secuencia vacía de caracteres.

Pero DateTime es solo un valor único, por lo que no tiene sentido hablar de un DateTime "vacío".

Si quiere representar el concepto de "sin valor", eso se representa como null en .Net. Y si desea usar eso con tipos de valor, necesita explícitamente convertirlos en nulos. Eso significa usar Nullable<DateTime> , o el equivalente DateTime? .

DateTime (al igual que todos los tipos de valores) también tiene un valor predeterminado , que se asigna a los campos no inicializados y también se puede obtener por new DateTime() o por default(DateTime) . Pero probablemente no quiera usarlo, ya que representa una fecha válida: 1.1.0001 0:00:00.


Ya sea:

DateTime dt = new DateTime();

o

DateTime dt = default(DateTime);