精度高的可以存精度低的,精度低的存精度高的会丢失精度(没有测过)
Mysql的常见时间类型:
datetime:2022-07-06 19:45:21 精确到毫秒
date:2022-07-06 精确到天
timestamp:2022-07-06 19:45:21 精确到毫秒 内存小,但是时间范围有限
java常见时间类型:
java.util.Date:2022-07-06T10:58:15.905+00:00很不好看,所以一般要格式化,但用这个存人数据库是正常显示的。取出来就不正常了
java.sql.Date:2022-07-06
所以一般用java.util.Date格式化,或者精度要求不高直接用java.sql.Date
String与java各时间类型转换
String变成java.util.Date(列举两个格式,其实不止)
public static Date timeformatd(String time){
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );//括号里的参数格式可以根据需求进行修改
try {
Date newTime = sdf.parse(time);//time为页面接收的String类型的参数
return newTime;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static Date timeformats(String time){
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );//括号里的参数格式可以根据需求进行修改
try {
Date newTime = sdf.parse(time);//time为页面接收的String类型的参数
return newTime;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
String变成java.sql.Date
String不能直接变成java.sql.Date
所以先变为java.util.Date再变为java.sql.Date
只讲java.util.Date变为java.sql.Date
Date newEntryTimeTemp= TimeFormat.timeformatd(entryTime);
java.sql.Date newEntryTime = new java.sql.Date(newEntryTimeTemp.getTime());
java.util.Date变成 String
(下面这个例子调了格式,只精确到天,可以精确到s等等)
public static String timeformatd(Date time){
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );//括号里的参数格式可以根据需求进行修改
String newTime = sdf.format(time);//time为页面接收的String类型的参数
return newTime;
}