sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

La cadena no se reconoció como un DateTime válido phpMyAdmin

[Dado que no es bueno si continuamos en los comentarios (los comentarios serán largos), solo pondré lo que pienso como una solución aquí]

Para formatear dateBuy al formato que desee, también debe poner el formato de cadena en ToString()

Es decir, en lugar de

dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();

poner

dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");

De lo contrario, es posible que ToString() para producir algo como "2015-10-16 12:00:00 AM" en lugar de "2015-10-16"

Sin embargo, dado que usa ParseExact , la entrada para dateBuy2 también debe tener el formato "yyyy-MM-dd", lo que anula el propósito. Puede considerar usar DateTimePicker de modo que pueda controlar el formato de entrada.

Alternativamente, puede usar DateTime.Parse o TryParse (según lo sugerido por Martheen) en su lugar, algo como esto

try {
    DateTime dt = DateTime.Parse(txtDateBuy.Text);
    dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
    //wrong format, do something to tell the user
}

Si la entrada tiene que estar en el TextBox mejor pon try-catch para evitar que su programa se bloquee por tomar una entrada con formato incorrecto si usa Parse .

Donde como si usaras TryParse puedes ponerlo en if-else sentencia de bloque en su lugar

DateTime dt;
if (DateTime.TryParse(txtDateBuy.Text, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt)) {
    //correct format, do something using dt
} else {
    //incorrect format, warns the user
}

Para obtener CultureInfo enum necesita agregar una referencia a System.Globalization

[Editado después de la sugerencia dada por el Sr. Soner Gonul]