java时间格式Date中util和sql的区别

java.util.Date和java.sql.Date的区别

1、java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,
PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date
2、java.util.Date是在除了SQL语句的情况下面使用,一般是日常日期字段
3、java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object --》 java.util.Date --》
 java.sql.Date

场景1

当所使用字段为“yyyy-MM-dd”时,可以直接使用java.sql.Date的时间类,不需要进行配置,只需要在前端往后台传输数据时,时间格式为“yyyy-MM-dd”即可,后台传前台时会默认“yyyy-MM-dd”,即在数据库存放的值。

场景二

当所使用字段为“yyyy-MM-dd HH:mm:ss”时,需要使用java.util.Date的时间类,并且需要对后台接收类的时间格式字段进行配置:

import java.util.Date;
@Date
public class DateInfo {
	@DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date time;
 }

如今时间插件或者组件都支持自定义格式的时间选择,但是java.util.Date并不会直接识别前端传参的格式并接收数据,所以往往会导致页面请求时报错,状态码400,参数请求错误。所以还需要对接收类的时间字段配置相应的注解,该注解分为两个方面的,一个是后台接收的格式化注解@DateTimeFormat,一个是后台发送的格式化注解@JsonFormat。 ps:数据库为MySQL数据库,时间字段类型为datetime。

经验分享 程序员 微信小程序 职场和发展