在java中常用的時(shí)間格式類(lèi)型為:java.util.Date? 和java.sql.Date狈癞。
本文主要講解三點(diǎn):
1.java.util.Date與java.sql.Date的區(qū)別。
2.時(shí)間轉(zhuǎn)換的方式茂契。
3.時(shí)間轉(zhuǎn)換過(guò)程中需要注意的地方蝶桶。
第一點(diǎn):1.java.util.Date,java.sql.Datejava.sql.Time的區(qū)別。
java.util.Date 是 java.sql.Date 的父類(lèi)
java.util.Date是不能直接插入數(shù)據(jù)庫(kù)中的掉冶,雖然它包含了日期和時(shí)分秒真竖。
java.sql.Date可以直接插入數(shù)據(jù)庫(kù),但是它只有日期而沒(méi)有時(shí)間厌小;
java.sql.Time可以直接插入數(shù)據(jù)庫(kù)恢共,但是它只有時(shí)間,沒(méi)有日期璧亚;
java.util.Date 就是在除了SQL語(yǔ)句的情況下面使用讨韭,我們通常格式化或者得到當(dāng)前時(shí)間都是用他。java.sql.Date 是針對(duì)SQL語(yǔ)句使用的癣蟋,一般在讀寫(xiě)數(shù)據(jù)庫(kù)的時(shí)候用他透硝,因?yàn)镻reparedStament的setDate()的第2參數(shù)和ResultSet的getDate()方法的第2個(gè)參數(shù)都是java.sql.Date
第二點(diǎn):2.時(shí)間轉(zhuǎn)換方式
方式一:util.Date轉(zhuǎn)為sql.Date? [將時(shí)間數(shù)據(jù)插入導(dǎo)數(shù)據(jù)庫(kù)中]
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
方式二:【java.util.Date轉(zhuǎn)化為java.sql.Timestamp】[獲取時(shí)間的時(shí)分秒丟失問(wèn)題]
前景描述:
如若要取得時(shí)分秒,可以用Date的子類(lèi)TimestampJava在向數(shù)據(jù)庫(kù)中插入時(shí)間的時(shí)候疯搅,常常遇到時(shí)濒生、分、秒丟失的情況幔欧,這種情況的發(fā)生一般是由于時(shí)間日期對(duì)象使用錯(cuò)誤造成的罪治。
如果我們要插入日期和時(shí)間丽声,那么就要想辦法來(lái)使用java.sql.Timestamp來(lái)向數(shù)據(jù)庫(kù)插入。java.sql.Timestamp可包含了日期和到毫秒的時(shí)間值觉义,在程序中雁社,我們常常是使用的java.util.Date,所以就要有解決的方法來(lái)實(shí)現(xiàn)晒骇。
有如下方法將java.util.Date轉(zhuǎn)化為java.sql.Timestamp
public java.sql.Timestamp getTimestamp(Date date) {
return new java.sql.Timestamp(date.getTime());
}
這樣霉撵,我們可以將我們使用的java.util.Date轉(zhuǎn)化,然后插入數(shù)據(jù)庫(kù)厉碟,便可以解決時(shí)喊巍、分屠缭、秒丟失的問(wèn)題箍鼓。
第三點(diǎn):時(shí)間轉(zhuǎn)換過(guò)程中需要注意的地方。
注意點(diǎn):[java中Date無(wú)法獲取數(shù)據(jù)庫(kù)時(shí)分秒的問(wèn)題]
數(shù)據(jù)庫(kù)中關(guān)于時(shí)間的分秒值都有呵曹,但是通過(guò)rs.getDate(“字段名”)取出的時(shí)間只有年月日款咖,丟失了具體的時(shí)間。
知識(shí)點(diǎn):java.sql.Date是只支持日期的奄喂,不支持時(shí)分秒铐殃。
而java.util.Date是有時(shí)間部分的。
在sql操作的時(shí)候跨新,resultSet中g(shù)etDate()默認(rèn)的類(lèi)型是java.sql.Date富腊,所以獲取的Date類(lèi)型是沒(méi)有時(shí)間部分的,setDate(rs.getTimestamp('time')),使用rs.getTimestamp()能夠很好的解決這個(gè)問(wèn)題域帐,記住setDate()的Date一定要是java.util.Date類(lèi)型
解決方法:rs.getTimestamp('time')
參考鏈接:
java中Date無(wú)法獲取數(shù)據(jù)庫(kù)時(shí)分秒的問(wèn)題