phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

La stringa non è stata riconosciuta come un phpMyAdmin DateTime valido

[Dato che non va bene se continuiamo nei commenti (i commenti saranno lunghi), mi limiterò a presentare quella che penso come soluzione qui]

Per formattare dateBuy nel formato che desideri, dovresti anche inserire il formato della stringa in ToString()

Cioè, invece di

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

metti

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

Altrimenti, è possibile per ToString() per produrre qualcosa come "2015-10-16 00:00:00 AM" invece di "2015-10-16"

Tuttavia, poiché usi ParseExact , l'input per dateBuy2 deve anche essere nel formato "aaaa-MM-gg" che vanifica lo scopo. Potresti prendere in considerazione l'utilizzo di DateTimePicker in modo da poter controllare il formato di input.

In alternativa, puoi utilizzare DateTime.Parse o TryParse (come suggerito da Martheen) invece, qualcosa del genere

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 l'input deve essere nel TextBox è meglio che metti try-catch per evitare che il tuo programma si arresti in modo anomalo per aver ricevuto input formattati in modo errato se usi Parse .

Dove come se usassi TryParse puoi inserirlo in if-else block invece

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
}

Per ottenere CultureInfo enum devi aggiungere un riferimento a System.Globalization

[Modificato su suggerimento del Sig. Soner Gonul]