【问题标题】:Not able to persist date below year 1970 in mysql DB [duplicate]无法在 mysql DB 中保留低于 1970 年的日期 [重复]
【发布时间】:2016-10-05 16:29:47
【问题描述】:

我在 MySQL DB 中使用 spring。当我想在 1969 年之后存储日期时很好,但低于 1970 年会抛出错误。错误是 ' com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的日期时间值:'1906-09-16 00:00:00' 列 'DATEOFBIRTH' 在第 1 行。'

我的域有字段,

@Column(name = "DATEOFBIRTH", nullable = true, length = 20)
@Setter
@Getter
private Date dateOfBirth;

我正在使用 mysql 连接器 jar 版本 5.1.30。我需要一些建议。

【问题讨论】:

标签: java mysql spring spring-data


【解决方案1】:

检查您正在使用的列的数据类型。将日期保存在 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' 范围内的日期应该是 DATETIME。

TIMESTAMP 支持的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。

这是文档:http://dev.mysql.com/doc/refman/5.7/en/datetime.html

【讨论】:

  • 我只正确使用了日期。这不是时间戳,所以它也应该接受低于 1970 年的时间,对吧?
  • 让我说清楚。 MySql 中列的数据类型必须是 DATETIME 不在实体中。尝试 desc 以了解列类型。在实体中任何一个 DATETIME、TIMESTAMP、DATE 都可以通过 Date 数据类型读取。
  • 理解了。酷
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2020-11-23
  • 2013-05-26
  • 1970-01-01
相关资源
最近更新 更多