查看該文對(duì)傳遞數(shù)據(jù)庫有了一定的了解
Java 向數(shù)據(jù)庫中輸入 datetime類型數(shù)據(jù)
可以通過java.sql.Date
和java.sql.Timestamp
兩個(gè)類向mysql寫入日期荧嵌,這兩個(gè)類都是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()));
其構(gòu)造函數(shù)分別有
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);
}
}
第一種方法分別傳遞各個(gè)位置信息鳄炉,主要看一下第二種構(gòu)造方法,我們需要傳遞一個(gè)long
類型的數(shù)據(jù)妆偏,因此當(dāng)我們向mysql傳遞當(dāng)前日期時(shí),需要使用new java.util.Date().getTime()
獲取當(dāng)前時(shí)間的long
值刻诊,這里注意需要添加完整名稱來區(qū)分java.util.Date()
和java.sql.Date()
-
傳遞結(jié)果(mysql中類型為datetime):
- 接下來看一下
java.sql.Date
讹挎,他繼承了java.util.Date
,其構(gòu)造方法為
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);
}
第一種比較簡(jiǎn)單躁锡,第二種構(gòu)造方法同樣也是傳遞一個(gè)long
值午绳,其實(shí)質(zhì)是調(diào)用了java.util.Date
的構(gòu)造方法
-
結(jié)果如下(mysql中類型為datetime,時(shí)間部分0):