查看该文对传递数据库有了一定的了解
Java 向数据库中输入 datetime类型数据
可以通过java.sql.Date
和java.sql.Timestamp
两个类向mysql写入日期,这两个类都是java.util.Date
的子类
public class Timestamp extends java.util.Date
public class Date extends java.util.Date
- 首先使用
java.sql.Timestamp
pstmt.setTimestamp(3,new Timestamp(new java.util.Date().getTime()));
//pstmt.setTimestamp(3,new Timestamp(System.currentTimeMillis()));
其构造函数分别有
public Timestamp(int year, int month, int date,
int hour, int minute, int second, int nano) {
super(year, month, date, hour, minute, second);
if (nano > 999999999 || nano < 0) {
throw new IllegalArgumentException("nanos > 999999999 or < 0");
}
nanos = nano;
}
public Timestamp(long time) {
super((time/1000)*1000);
nanos = (int)((time%1000) * 1000000);
if (nanos < 0) {
nanos = 1000000000 + nanos;
super.setTime(((time/1000)-1)*1000);
}
}
第一种方法分别传递各个位置信息,主要看一下第二种构造方法,我们需要传递一个long
类型的数据,因此当我们向mysql传递当前日期时,需要使用new java.util.Date().getTime()
获取当前时间的long
值,这里注意需要添加完整名称来区分java.util.Date()
和java.sql.Date()
-
传递结果(mysql中类型为datetime):
image.png
- 接下来看一下
java.sql.Date
,他继承了java.util.Date
,其构造方法为
public Date(int year, int month, int day) {
super(year, month, day);
}
public Date(long date) {
// If the millisecond date value contains time info, mask it out.
super(date);
}
第一种比较简单,第二种构造方法同样也是传递一个long
值,其实质是调用了java.util.Date
的构造方法
-
结果如下(mysql中类型为datetime,时间部分0):
image.png