phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

A string não foi reconhecida como um phpMyAdmin DateTime válido


[Já que não é bom se continuarmos nos comentários (os comentários serão longos), vou apenas colocar o que eu acho como solução aqui]

Para formatar dateBuy para o formato que você deseja, você também deve colocar o formato da string no ToString()

Ou seja, em vez de
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();

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

Caso contrário, é possível que o ToString() para produzir algo como "2015-10-16 12:00:00 AM" em vez de "2015-10-16"

No entanto, como você usa ParseExact , a entrada para o dateBuy2 também deve estar no formato "aaaa-MM-dd" que anula o propósito. Você pode considerar usar DateTimePicker para que você possa controlar o formato de entrada.

Alternativamente, você pode usar DateTime.Parse ou TryParse (como sugerido por Martheen) em vez disso, algo assim
try {
    DateTime dt = DateTime.Parse(txtDateBuy.Text);
    dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
    //wrong format, do something to tell the user
}

Se a entrada tiver que estar no TextBox é melhor você colocar try-catch para evitar que seu programa falhe por receber entradas formatadas incorretamente se você usar Parse .

Onde como se você usasse TryParse você pode colocá-lo em if-else instrução de bloco em vez disso
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 obter CultureInfo enum você precisa adicionar referência a System.Globalization

[Editado após sugestão dada pelo Sr. Soner Gonul]