#c# #mysql #datetime
#c# #mysql #дата и время
Вопрос:
У нас есть сервер в .NET (не ASP.NET ) и использовать MySQL. Есть ли способ установить временную зону только для сеанса?
Например, в php вы можете установить временную зону в параметрах подключения.
Комментарии:
1. У нас есть сервер в .NET (не ASP.NET ) Хм.. Что? о.О
2. Вы перепутали значения local и UTC и предполагаете, что способ исправить это — жестко запрограммировать часовой пояс. Это не так. Либо введите значения со смещениями (например, DateTimeOffset в .NET и эквивалент в MySQL), либо используйте UTC везде (в .NET и в базе данных), гарантируя, что все значения DateTime имеют DateTimeKind.UTC. DateTimeOffset — более простое решение
3. Возможно, этот вопрос следует изменить на «Как мне преодолеть недостающие смещения часовых поясов MySQL»? То, что вы просите, — это взлом MySQL для учета отсутствия типа времени со смещениями, что предполагает, что вам никогда не придется хранить время из разных часовых поясов. Разработчики MySQL, похоже, не летают на международном уровне. В .NET есть смещения (DateTimeOffset), поэтому самым простым способом было бы изменить ваш код для преобразования
DateTime
значенийDateTimeOffset
с тем же смещением, что и на сервере4. Другое решение — использовать UTC везде, особенно в MySQL. Поиск лучшей базы данных также является очень хорошим вариантом. PostreSQL намного надежнее и имеет гораздо лучшую поддержку типов
5. Мы используем utc везде (дата-время. UtcNow), но часовой пояс ОС должен быть установлен на местное время. MySQL имеет тип timestamp, который хранится в utc и отображается на клиенте в соответствии с часовым поясом, определенным в их сообщении (global / session, …). Проблема в том, что когда я сохраняю время utc, время преобразуется в utc дважды: 1. Дата-время. Сам UtcNow и 2. из-за часового пояса связи между сервером и MySQL — все время рассматривается как местное время. Я мог бы использовать DateTime. Теперь, но тогда у нас возникнут проблемы во время перехода на летнее время. Хранить время в MySQL как int также не вариант для нас.