Java如何给Mysql中插入year类型数据
实际问题:
有时候我们mysql数据库需要存储以年为单位的数据。这时我们可能会用到year类型数据,如下图:
当我们从数据库中查询数据或插入数据时,需要相应的类型变量。
解决方案:
从数据库中读取year类型数据到Java
- 此时我们可以使用java.util.Date类型来进行接收,但月份和日期会默认为1月1日,如下图:
从Java中往数据库存储year数据
- 此时我们不能直接存入Date类型数据,否则会出现Data truncated for column ‘xxxx’ at row 1 异常。
- 此时我们需要从Date类型中重新获取到Year的值,由于JDK 1.8后java.util.Date 中的getYear方法已经过时,因此这里我将其转为LocalDate类型然后再获取Year的值。
- 转换如下:
@Test
public void testDateGetYear() {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
// atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
System.out.println("Date :" + date);
System.out.println("LocalDate :" + localDate);
}
实际案例如下
至此,问题解决。