【发布时间】:2016-10-27 08:10:32
【问题描述】:
我在将 java Date 对象保存到 MySql 数据库时遇到了一个奇怪的问题。这是我得到的错误:
Incorrect datetime value: '1970-01-01 02:55:00' for column 'start_time' at row 1
我的 sql 脚本
CREATE TABLE `schedules` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`start_time` timestamp NOT NULL,
`end_time` timestamp NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我的实体的一部分:
@Column(name = "start_time")
private Date startTime;
当我尝试做类似的事情时
String time = "02:55"
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
scheduleEntity.setStartTime(sdf.parse(time));
repository.save(scheduleEntity);
它出错了。但是当我使用"16:00" 字符串进行解析时,它可以完美运行。我使用 Spring Boot,Spring Data 和 Hibernate。有人能帮我吗?
【问题讨论】:
-
如果你只想记录时间,而不是日期和时间,那么在 MySQL 中使用
time数据类型,而不是时间戳。 -
听起来是个好主意!我测试过,它有效。您能否将其作为完整答案发布,并附上一些关于如何存储时间并将其映射到 java 的简短有用的 cmets?提前致谢! @影子
-
你能试试这个 sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
标签: java mysql spring hibernate