在服務器環境下(linux 或 docker),有時系統時區默認是 UTC 時區,這時需要格外注意下應用使用的時區信息。
在使用 ef + linq 執行 mysql 查詢時,若查詢條件中含有 Datetime.Now(),則會按 mysql 的時區信息查詢,造成時間錯亂。
可以使用 select now(); 來檢查 mysql 的當前時間是否准確。
修改 mysql 的時區配置:
1、臨時配置(重啟后失效):
set time_zone = '+8:00'; set global time_zone = '+8:00';
注意,執行以上語句后,需重新連接 mysql 生效。
2、永久配置(重啟仍有效):
修改 my.cnf 文件配置(修改后重啟 mysql 生效):
# 設置默認時區 [mysqld] default-time_zone='+8:00'
轉自:https://blog.csdn.net/starlemon2016/article/details/90314649