主题: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.9.5-1
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):OpenLDAP
- 使用的 Linux/BSD 发行版名称及版本号:Centos7
- 与您的问题相关的日志信息:见下方
====

Amavisd数据库中的msgs表的time_iso字段应该是记录邮件投递的时间,但该时间比实际的时间晚了8小时,如下记录中的时间实际应为2017年1月17日18点27分,但数据库中记录的时间为2017年1月17日10点27分。

time_iso
20170117102750

IredAdmin数据库中的log表的timestamp字段应该是记录操作的时间,该时间也比实际的时间晚了8小时。

timestamp
2017/1/17 10:49

我看了下系统的时区设置,没有问题,系统时间也是对的,/var/log/maillog中AMAVISD日志的时间也是对的,mysql中设置的时区也是对的。
系统时区设置:

[root@server_name etc]# timedatectl
Local time: 二 2017-01-17 18:52:30 CST
Universal time: 二 2017-01-17 10:52:30 UTC
RTC time: 二 2017-01-17 10:52:31
Time zone: Asia/Shanghai (CST, +0800)

/var/log/maillog中AMAVISD日志的时间:

Jan 17 19:09:11 server_name amavis[3997]:

Mysql中的时区设置:

MariaDB [iredadmin]> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | +08:00 |
+------------------+--------+

但数据库中记录的时间就是晚了8小时,太奇怪了,有同样问题的朋友请指导一下问题在哪,谢谢。

回复: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

在 iRedAdmin 配置文件里设置正确的时区。如:

LOCAL_TIMEZONE = 'GMT+08:00'

重启 apache 或 uwsgi 服务。

回复: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

ZhangHuangbin 写道:

在 iRedAdmin 配置文件里设置正确的时区。如:

LOCAL_TIMEZONE = 'GMT+08:00'

重启 apache 或 uwsgi 服务。

之前我在论坛里找到了帖子提到这一参数,已设置并重启APACHE,没有解决,重启了CENTOS,问题还是一样的。

/var/log/iredapd/iredapd.log中的日志时间是正确的,但IREDADMIN数据库中的时间戳就是晚了8小时。

回复: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

saic1985 写道:

/var/log/iredapd/iredapd.log中的日志时间是正确的,但IREDADMIN数据库中的时间戳就是晚了8小时。

存在数据库里的是 UTC 时间,设置了时区后会自动转换。

回复: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

但Amavisd中记录的是14位的时间戳,也是按UTC时间记录的,这个怎么自动转换?

6 最后由 saic1985 (2017-01-19 12:38:20) 编辑

回复: AMAVISD和IREDADMIN数据库记录时间戳晚了8小时

找到了,SELECT的时候用FROM_UNIXTIME将time_num转换一下就可以了,time_iso字段记录的是UTC时间,谢谢张工支持。