Как получить формат DateTime в Utc?

#c# #sql-server

#c# #sql-сервер

Вопрос:

У меня есть таблица, в которой хранится столбец DateTime в виде значений Utc «2019-03-12 09:42:14.39 00:00». Когда я пытаюсь извлечь значение и преобразовать его в DateTime с помощью функции Convert(), оно преобразует его обратно в мое местное время (мое системное время). Я использовал

 DateTime.TryParse(dateTime, CultureInfo.InvariantCulture , DateTimeStyles.AdjustToUniversal, out dt)
  

Это отлично работает и сохраняет формат utc, но проблема в том, что он преобразует дату из «12-03-2019 09: 42:14» в «03-12-2019 09: 42:14». Есть ли лучший способ сделать это или как я могу исправить эту проблему?

Комментарии:

1. Этот код не является T-SQL. Вы на самом деле делаете это в SQL Server? Какое значение вы ожидаете при преобразовании 2019-03-12 09:42:14.39 00:00 в datetime ? Я бы ожидал 2019-03-12 09:42:14.390 , поскольку в datetime типе данных нет места для хранения часового пояса времени; таким образом, эта информация «потеряна».

2. Это в SQLServer 2012. Я ожидаю 12-03-2019 09: 42: 14 в качестве выходных данных.

3. Тогда где вы это запускаете? Как я уже сказал, это не T-SQL.

4. Изменение тегов. Забыл добавить в первую очередь.

5. Если 12-03-2019 09:42:14 выполняется преобразование в 03-12-2019 09:42:14 , звучит так, как будто кто-то использует string / varchar для хранения значений даты и времени, и когда C # считывает `string / varchar», он неявно считывается в формате с переключением месяца и дней на то, что они есть (не уверен, 12-03 это 12 марта или 03 декабря). Если вы используете string / varchar , возникает ваша первая проблема.