mysql - Java:无需时间转换即可保存日期时间
问题描述
我正在使用spring boot和mysql。
首先,我的一个时间字段使用 Date 类型,@JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT, timezone = "....")
由于时区不同,我必须使用它来处理时间转换。然后我将其从 更改Date
为LocalDateTime
以确保没有时间转换并timezone
从上面的注释中删除该属性。
但我错了,在 UAT 环境中,保存在 UI(swagger) 中的输入数据在数据库中将 '12:00:00' 更改为 '04:30:00'。
然后我尝试通过调整我机器中的时区以及 mysql 服务器中的当前时区来进行测试。这是几次尝试后的结果:
Back-end Timezone, Database Timezone | Result
- BE:+8:00,DB:+5:00 | 12 小时 -> 9 小时
- BE:+0:00,DB:+5:00 | 12 小时 -> 17 小时
- BE:+8:00,DB:+0:00 | 12 小时 -> 4 小时
表列的数据类型是time
因为我只想保存和显示时间,所以哪个日期都没有关系,所以我将1970-01-01
其用作默认日期。
问题是由于 BE 和 DB 的时区不同,我不想进行任何时间转换,我希望数据库中保存的数据与 UI 上的输入时间完全相同(UI:12h -> DB:12h)。
这是我在实体中的字段:
@ApiModelProperty(example = "1970-01-01 12:00:00")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT)
private LocalDateTime monStartTime;
问题:尽管BE和DB之间的时区不同,有什么方法可以避免时间转换?
解决方案
您可以在后端将字符串作为数据类型。
private Sting monStartTime;
无需更改数据库。数据库列应该是你已经拥有的时间。
尝试这个。它不会转换您的时区。
推荐阅读
- javascript - 如何将blob文件下载为pdf格式反应JS?
- indexing - 在 couchbase 中高效地创建索引
- sql - 如何使用完全连接操作获得左连接的输出?
- python - 如何将我的函数接收到的参数传递给在 Python 中我的函数内部创建的类?
- wordpress - Gravity Form 不适用于结帐页面
- php - 如何将多个php文件合并为一个php文件
- php - 如何停止 Xdebug 以停止调试本身?
- python - 散景补丁不使用 CDS 加载多面体
- swift - 如何从 Podspec 自动安装 3rd 方框架
- r - R:gtable 和 ggplot 对象之间的可靠转换。如何在ggplot_build()之后使lemon :: reposition_legend()工作?