Mysql数据库中的时间格式有:
Date :年月日
Datetime :年月日时分秒
时间戳转换的
Time:时分秒
Timestamp:年月日 时分秒
取时间类型的字段,无论什么时间类型,都可以直接赋值给java.util.Date
Java内存中使用的时间类型是:Java.util.Date
数据库中使用的时间类型对应的:java.sql.Date 是java.util.Date的子类
我们使用时会导致时间格式冲突
第一种方式:把java.util.Date转换成java.sql.Date
-
Java.sql.Date(long date)
-
使用给定的毫秒时间值构造一个 Date对象。
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
try{
conn = JDBCUtils.getConn();
String sql = "insert into account values(?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,"wangwu");
ps.setInt(2,200);
Date d = new Date();//在Java内存中使用的是 Java.util下的Date 父类
// 把java.util.Date 转换成Long的时间戳
long time = d.getTime();
//创建java.sql.Date 根据时间戳生成时间
java.sql.Date d1 = new java.sql.Date(time);
ps.setDate(3,d1);
ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeConn(conn,ps);
}
}
第二种方式 将日期格式化成字符串存储(推荐使用)
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
try{
conn = JDBCUtils.getConn();
String sql = "insert into account values(?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,"lisi");
ps.setInt(2,200);
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String date1 = sf.format(date);
ps.setString(3,date1);
ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeConn(conn,ps);
}
}
第三种方式:使用now()函数
Mysql中now()可以直接获取当前系统时间
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
try{
conn = JDBCUtils.getConn();
String sql = "insert into account values(?,?,now())";
ps = conn.prepareStatement(sql);
ps.setString(1,"zhaoliu");
ps.setInt(2,200);
ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeConn(conn,ps);
}
}