zin*_*rks 4 java mysql datetime mybatis
jvm 时区 : Asia/Seoul
我的测试查询
选择#{从},#{到}
输入
YearMonth input = YearMonth.of(year, month)
LocalDateTime from = input.atDay(1).atStartOfDay()
LocalDateTime to = input.atEndOfMonth().atTime(LocalTime.MAX)
Run Code Online (Sandbox Code Playgroud)
情况1。添加serverTimezone=UTC到 jdbc url
情况1。添加serverTimezone=Asia/Seoul到 jdbc url
[11:03:54] [main] [DEBUG] BaseJdbcLogger.debug(143)| ==> Preparing: SELECT ?, ?
[11:03:54] [main] [DEBUG] BaseJdbcLogger.debug(143)| ==> Parameters: 2020-01-01T00:00(LocalDateTime), 2020-01-31T23:59:59.999999999(LocalDateTime)
[11:03:54] [main] [DEBUG] Slf4jSpyLogDelegator.sqlTimingOccurred(368)| com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
1. SELECT 2020-01-01T00:00, 2020-01-31T23:59:59.999999999
{executed in 3 msec}
[11:03:54] [main] [INFO ] Slf4jSpyLogDelegator.resultSetCollected(610)|
|----------------------|----------------------|
|2019-12-31 15:00:00.0 |2020-01-31 15:00:00.0 |
|----------------------|----------------------|
|----------------------|----------------------|
Run Code Online (Sandbox Code Playgroud)
[14:27:16] [main] [DEBUG] BaseJdbcLogger.debug(143)| ==> Preparing: SELECT ?, ?
[14:27:16] [main] [DEBUG] BaseJdbcLogger.debug(143)| ==> Parameters: 2020-01-01T00:00(LocalDateTime), 2020-01-31T23:59:59.999999999(LocalDateTime)
[14:27:16] [main] [DEBUG] Slf4jSpyLogDelegator.sqlTimingOccurred(368)| com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
1. SELECT 2020-01-01T00:00, 2020-01-31T23:59:59.999999999
{executed in 4 msec}
[14:27:16] [main] [INFO ] Slf4jSpyLogDelegator.resultSetCollected(610)|
|----------------------|----------------------|
|2020-01-01 00:00:00.0 |2020-02-01 00:00:00.0 |
|----------------------|----------------------|
|----------------------|----------------------|
Run Code Online (Sandbox Code Playgroud)
Q1. java LocalDateTime 是用 mybatis LocalDateTimeTypeHandler 转换为 jdbc TIMESTAMP 吗?
Q2。mybatis LocalDateTimeTypeHandler 是否根据 jdbc servertimezone 设置转换值?
Q3。为什么我的2020-01-31T23:59:59.999999999值转换为2020-02-01 00:00:00.0?
LocalDateTime不,MyBatis 从 3.5.1 版本开始就不再转换java.sql.Timestamp(不过在早期版本中是这样做的)。LocalDateTimeMySQL 的TIME和只有微秒(6 位数字)精度。MySQL 文档中对您观察到的行为进行了解释。
DATETIMETIMESTAMP将带有秒小数部分的 TIME、DATE 或 TIMESTAMP 值插入到相同类型但小数位数较少的列中会导致四舍五入。
| 归档时间: |
|
| 查看次数: |
5299 次 |
| 最近记录: |