在服务器环境下(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