sql >> Databáze >  >> Database Tools >> phpMyAdmin

Řetězec nebyl rozpoznán jako platný DateTime phpMyAdmin

[Vzhledem k tomu, že není dobré, když budeme pokračovat v komentářích (komentáře budou dlouhé), dám sem jen to, co si myslím, jako řešení]

Chcete-li formátovat dateBuy do formátu, který chcete, měli byste také zadat formát řetězce do ToString()

Tedy místo

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

dát

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

Jinak je to možné pro ToString() vytvořit něco jako „2015-10-16 00:00:00 AM“ místo „2015-10-16“

Protože však používáte ParseExact , vstup pro dateBuy2 musí být také ve formátu "yyyy-MM-dd", což maří účel. Můžete zvážit použití DateTimePicker tak, abyste mohli ovládat vstupní formát.

Případně můžete použít DateTime.Parse nebo TryParse (jak navrhl Martheen) místo toho něco takového

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

Pokud vstup musí být v TextBox raději zadejte try-catch abyste zabránili zhroucení vašeho programu kvůli nesprávně naformátovanému vstupu, pokud použijete Parse .

Kde jako když používáte TryParse můžete jej vložit do if-else místo toho příkaz blok

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
}

Chcete-li získat CultureInfo enum musíte přidat odkaz na System.Globalization

[Upraveno na základě návrhu pana Sonera Gonula]




  1. Skriptujte všechny uložené procedury v Management Studio 2005

  2. Jak mohu zobrazit úplnou historii úloh SQL?

  3. Proč jsou názvy aliasů stejné jako názvy sloupců, když jsou uloženy jako pohled?

  4. Připojte se k externímu serveru pomocí phpMyAdmin