Преобразование DateTime для MySQL с использованием С#
Я хочу изменить DateTime для MySQL в С#.
Моя база данных MySQL принимает этот формат 1976-04-09 22:10:00
.
В С# есть строка, у которой есть значение даты:
string str = "12-Apr-1976 22:10";
Я хочу конвертировать для MySQL, тогда он выглядит так:
1976-04-12 22:10
Как я могу их изменить или как это сделать другим программистом, используя метод dd mm hh yy
? Может ли кто-нибудь рассказать мне о них?
Ответы
Ответ 1
Имейте в виду, что вы можете жестко кодировать ISO-формат
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm:ss");
или используйте следующий:
// 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)
и т.д.
Ответ 2
Если ваш строковый формат для DateTime исправлен, вы можете преобразовать его в System.DateTime
, используя:
string myDate = "12-Apr-1976 22:10";
DateTime dateValue = DateTime.Parse(myDate);
Теперь, когда вам это нужно в вашем конкретном формате, вы можете отменить процесс, т.е.:
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm");
edit - обновленный код. По какой-то странной причине DateTime.ParseExact не играл хорошо.
Ответ 3
Я бы настоятельно предложил вам использовать параметризованные запросы вместо того, чтобы сначала отправлять значения в виде строк.
Таким образом, вам нужно только преобразовать ваш формат ввода в DateTime
или DateTimeOffset
, а затем вам не нужно беспокоиться о формате базы данных. Это не только проще, но и позволяет избежать атак SQL-инъекций (например, для строковых значений) и является более надежным с точки зрения изменений настроек базы данных.
Для исходного преобразования в DateTime
я предлагаю вам использовать DateTime.ParseExact
или DateTime.TryParseExact
для явного указания ожидаемого формата.
Ответ 4
Это работает для меня:
1. Извлечь дату из базы данных oracle и передать ее переменной
string lDat_otp = "";
if (rw_mat["dat_otp"].ToString().Length <= 0)
{
lDat_otp = "";
}
else
{
lDat_otp = rw_mat["dat_otp"].ToString();
}
2. Преобразование в формат mysql
DateTime dateValue = DateTime.Parse(lDat_otp);
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm");
3.Pass formatForMySql переменная для процедуры или что-то еще