mysql 5.7
mybatis 3.4.0
mysql-connector-java-6.0.6
В таблице есть столбец с именем sent_datetime
, тип которого равенtimestamp
:
существует запись, и значение sent_datetime
равно:
Мы можем видеть, что его значение равно 2019-06-20 17:24:34
.
MySql находится на другом сервере, ОС которого равна centos 7.
Java-бин (Iустановите sent_datetime
как java.util.Date
):
public class MailLog implements Serializable{
private static final long serialVersionUID = 7752106961960847185L;
private Date sent_datetime;
public Date getSent_datetime() {
return sent_datetime;
}
}
In dao
, когда я запрашиваю эту запись и печатаю значение sent_datetime
:
MailLog log = mybatisTemplate.selectOne("getMailLog", mailLog);
System.out.println(log.getSent_datetime());
Однако онопечатает пт 21 июня 06:24:34 CST 2019 .Это неправильно.
Между тем, если CST
означает американское время, оно должно быть 20 , НЕ МОЖЕТ БЫТЬ 21 * , верно?
ЕслиЯ устанавливаю sent_datetime
как String
в Java-бине, затем он печатает правильное значение.
Тем не менее, некоторые записи сохраняются или отображаются некорректно, некоторые верны.
Почему это происходит?
В mysql я запускаю SELECT @@global.time_zone, @@session.time_zone, @@system_time_zone;
, он возвращает SYSTEM SYSTEM CST
.