Проблема часового пояса при объединении Tomcat9 с MySQL8 - PullRequest
0 голосов
/ 17 декабря 2018

Я использую time TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3); для столбца времени, поэтому он будет автоматически установлен при вставке новой строки.

В соответствии с MySQL TIMESTAMP Type Manual ,

MySQL преобразует значения TIMESTAMP из текущего часового пояса в UTC для хранения и обратно из UTC в текущее времязона для поиска.

При использовании функции SELECT () в CLI все выглядит нормально:

mysql> SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
+--------------------------------+
| TIMEDIFF(NOW(), UTC_TIMESTAMP) |
+--------------------------------+
| 08:00:00                       |
+--------------------------------+

1 row in set (0.00 sec)

mysql> select time from databasename.tablename;
+-------------------------+
| time                    |
+-------------------------+
| 2018-12-16 22:02:45.891 |
| 2018-12-16 22:02:46.032 |
| 2018-12-16 22:02:46.169 |
| 2018-12-16 22:02:46.304 |

```data following```

Однако, когда я пытаюсь отобразить ее на JSP-странице, основанной на Tomcat, используйте:

<td align="center">
<c:set var="time" value="${row.time}" />
<fmt:setTimeZone value="GMT+8" />
<fmt:formatDate value="${time}" pattern="yyyy-MM-dd HH:mm:ss.SSS" />
</td>

отображает странное время, которое на 14 часов раньше, чем GMT + 8, в то время как текущее время печатается нормально:

<td align="center" colspan="14">
<h1>
<c:set var="now" value="<%=new java.util.Date()%>" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm" />
</h1>
</td>

Есть идеи о том, что происходит?

PS: row взято из Официального учебного пособия по Tomcat Connect. демонстрационные коды в 4. Test code, как показано ниже:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/TestDB">
select id, foo, bar from testdata
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>

  <h2>Results</h2>

<c:forEach var="row" items="${rs.rows}">
    Foo ${row.foo}<br/>
    Bar ${row.bar}<br/>
</c:forEach>

  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...