MySQL.Data DateTime.Kind отличается от SQL DATETIME и TIMESTAMP - PullRequest
0 голосов
/ 08 декабря 2018

Итак, я обновился до MySql.Data 8.0.13 и заметил, что мои поля TIMESTAMP имеют вид DateTimeKind.Local, а поля DATETIME читаются как DateTimeKind.Unspecified

Я думал, что «Метка времени» будетотличный семантический тип для представления поля «CreatedTime», поэтому я пошел с ним.

Дело в том, что я обычно пишу эти даты «вручную» в запросах на вставку, они генерируются приложением, вUTC, чтобы убедиться, что местное время и их сумасшедшие часовые пояса / летнее время ничего не сломят.Я не использую обновления или вставки на них.И теперь у меня возникают проблемы с сериализатором JSON приложения, который снова преобразует уже UTC в UTC, что приводит к неправильному времени смещения.

Итак, мой вопрос:

Есть ли способ принудительного примененияMySQL.Data для "Рассмотреть эти даты / метки времени как UTC"?Или мне лучше прекратить использование TIMESTAMP и придерживаться DATETIME?Или я должен вытащить такой сумасшедший трюк, как этот?

if(databaseValue is DateTime dt) {
     databaseValue = new DateTime(dt.Ticks, DateTimeKind.UTC);
}

Какой способ решения этой проблемы предпочтительнее?

1 Ответ

0 голосов
/ 14 декабря 2018

Существует альтернативная библиотека MySqlConnector , в которой есть опция DateTimeKind, которую можно указать в строке подключения :

DateTimeKind, используемый при возврате MySqlDataReaderDateTime.Если установлено значение Utc или Local, MySqlException будет выброшено, если параметр команды DateTime имеет тип Local или Utc, соответственно.

...