在mysql time列中保存localtime

liwlm1x9  于 2021-06-17  发布在  Mysql
关注(0)|答案(0)|浏览(227)

背景故事

我最近遇到了一个保存一个 LocalTimeTIME mysql数据库中的列。保存值 9:00 导致 8:00 保存在数据库中。
这个问题在我的开发环境(windows)上没有发生,但在我们尝试的两台linux机器上确实发生了。
我的代码如下:

preparedStatement.setObject(parameterIndex, localTime, JDBCType.TIME);

经过调查,我最终发现mysql jdbc驱动程序正在使用 java.sql.Time.valueOf(localTime) ,然后使用 SimpleDateFormat 将其时区设置为mysql服务器的 system_time_zone 系统属性(通过 time_zone = 'SYSTEM' ),将其打印为字符串。
在linux机器上, system_time_zoneGMT ,在windows机器上 GMT Standard Time . (我在英国。)
所以
LocalTime 9:00 已转换为 Time9:00 Europe/London (实际上内部建模为 1st January 1970 9:00 Europe/London ),然后用 GMT 时区,与 UTC . 现在,通常这两个时区与1月份的utc的偏移量为零,但英国在1969年和1970年全年都保持夏时制。所以减去了一个小时。

问题

写一篇文章最好的方法是什么 LocalTime 到mysql数据库,避免这种问题?我只是想 9:00 ,没有时区,没有日期,只有一天的时间。我不想让它适应时区的不同,因为它只是 9:00 ,而不是在任何特定的日子或地点。
现在我正在打印 LocalTime 作为一个字符串,并发送到数据库,但我觉得应该有一个更好的方法。有?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题