Je veux changer le DateTime pour MySQL en C #.
Ma base de données MySQL accepte uniquement ce format 1976-04-09 22:10:00
.
En C # ont une chaîne qui a une valeur de date:
string str = "12-Apr-1976 22:10";
Je veux convertir pour MySQL alors ça ressemble à:
1976-04-12 22:10
Comment puis-je les modifier ou comment les autres programmeurs le font en utilisant dd mm hh yy
méthode? Quelqu'un peut-il m'en parler?
Gardez à l'esprit que vous pouvez coder en dur le format ISO
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm:ss");
ou utilisez ensuite:
// just to shorten the code
var isoDateTimeFormat = CultureInfo.InvariantCulture.DateTimeFormat;
// "1976-04-12T22:10:00"
dateValue.ToString(isoDateTimeFormat.SortableDateTimePattern);
// "1976-04-12 22:10:00Z"
dateValue.ToString(isoDateTimeFormat.UniversalSortableDateTimePattern)
etc
Si le format de votre chaîne pour le DateTime est fixe, vous pouvez le convertir en System.DateTime
en utilisant:
string myDate = "12-Apr-1976 22:10";
DateTime dateValue = DateTime.Parse(myDate);
Maintenant, lorsque vous en avez besoin dans votre format spécifique, vous pouvez ensuite inverser le processus, à savoir:
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm");
edit - code mis à jour. Pour une raison étrange, DateTime.ParseExact ne jouait pas à Nice.
Je vous suggère fortement d'utiliser des requêtes paramétrées au lieu d'envoyer des valeurs sous forme de chaînes en premier lieu.
De cette façon, vous devez uniquement être en mesure de convertir votre format d'entrée en DateTime
ou DateTimeOffset
, et vous n'avez alors pas à vous soucier du format de la base de données. Ceci est non seulement plus simple, mais évite les attaques par injection SQL (par exemple pour les valeurs de chaîne) et est plus robuste face aux changements de paramètres de base de données.
Pour la conversion d'origine en DateTime
, je vous suggère d'utiliser DateTime.ParseExact
ou DateTime.TryParseExact
pour spécifier explicitement le format attendu.
Cela fonctionne pour moi:
1. extraire la date de la base de données Oracle et la transmettre à la variable
string lDat_otp = "";
if (rw_mat["dat_otp"].ToString().Length <= 0)
{
lDat_otp = "";
}
else
{
lDat_otp = rw_mat["dat_otp"].ToString();
}
2.Conversion au format mysql
DateTime dateValue = DateTime.Parse(lDat_otp);
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm");
3. passez la variable formatForMySql à la procédure ou à autre chose