Подтвердить что ты не робот

Преобразование 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? Может ли кто-нибудь рассказать мне о них?

4b9b3361

Ответ 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 переменная для процедуры или что-то еще