日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Timestamp 基礎(chǔ)知識(shí)及時(shí)間大小比較

 tottiyq 2010-11-02
Timestamp 基礎(chǔ)知識(shí)及時(shí)間大小比較
主要寫一些與數(shù)據(jù)庫(kù)連接時(shí)的日期處理,pstmt.setDate()的類型是java.sql.Date類型,這種符合規(guī)范的類型其實(shí)并沒(méi)有把時(shí)分秒存進(jìn)數(shù)據(jù)庫(kù),所以存取時(shí)就應(yīng)該用setTimestamp()或getTimestamp()。

整理一:
java.sql.Date 只存儲(chǔ)日期數(shù)據(jù)不存儲(chǔ)時(shí)間數(shù)據(jù)
// 會(huì)丟失時(shí)間數(shù)據(jù)
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
//可以這樣來(lái)處理
preparedStatement.setTimestamp(1, new Timestamp(new java.util.Date().getTime()));

//想要得到完整的數(shù)據(jù),包括日期和時(shí)間,可以這樣
java.util.Date d = resultSet.getTimestamp(1);
//這樣處理更合適一些,可以避免一些潛在Timestamp 問(wèn)題
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());
   往數(shù)據(jù)庫(kù)存儲(chǔ)的時(shí)候可以接收 java.util.Date類型 再用getTime()方法得到代表那個(gè)Date對(duì)象的long值,再以這個(gè)long值構(gòu)造一個(gè)Timestamp對(duì)象 存進(jìn)數(shù)據(jù)庫(kù)中。
       從存數(shù)據(jù)庫(kù)里取的時(shí)候,可以先得到Timestamp用他的getTime()方法得到long值,再以這個(gè)long值構(gòu)造一個(gè) java.util.Date對(duì)象,這樣就可以對(duì)這個(gè)Date對(duì)象操作了。比如說(shuō) new SimpleDateFormat("yyyyy-MM-dd HH:mm:ss").format(Date)或format(Timestamp)都行~

整理二:
用Timestamp來(lái)記錄日期時(shí)間還是很方便的,但有時(shí)候顯示的時(shí)候是不需要小數(shù)位后面的毫秒的,這樣就需要在轉(zhuǎn)換為String時(shí)重新定義格式。

String轉(zhuǎn)化為Timestamp:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//定義格式,不顯示毫秒
Timestamp now = new Timestamp(System.currentTimeMillis());
//獲取系統(tǒng)當(dāng)前時(shí)間
String str = df.format(now);         
String轉(zhuǎn)化為Timestamp:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);     

整理三:
在 ResultSet中我們經(jīng)常使用的setDate或getDate的數(shù)據(jù)類型是java.sql.Date,而在平時(shí)java程序中我們一般習(xí)慣使用 java.util.Date。因此在DAO層我們經(jīng)常會(huì)碰到這倆種數(shù)據(jù)類型的相互轉(zhuǎn)換。
兩者的關(guān)系
java.lang.Object
    |
    +---java.util.Date
            |
            +----java.sql.Date
相互轉(zhuǎn)換
1. 使用getTime()函數(shù)
這兩個(gè)類都提供了getTime()函數(shù),用于返回對(duì)應(yīng)的毫秒數(shù)(long類型)。利用這個(gè)函數(shù)可以實(shí)現(xiàn)轉(zhuǎn)換:
    java.util.Date utilDate = new java.util.Date(sqlDate.getTime());   // sql -> util
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());   // util -> sql

2. 使用SimpleDateFormat類實(shí)現(xiàn)轉(zhuǎn)換
SimpleDateFormat 是一個(gè)以國(guó)別敏感的方式格式化和分析數(shù)據(jù)的具體類。 它允許格式化 (date -> text)、語(yǔ)法分析 (text -> date)和標(biāo)準(zhǔn)化。
SimpleDateFormat dateFormat = new SimpleDateFormate("yyyy-MM-dd HH:mm:ss");
java.util.Date utilDate = dateFormat.parse(sqlDate.toString());

3. 直接轉(zhuǎn)換
由于java.sql.Date是從java.util.Date中繼承過(guò)來(lái)的,所以可以直接用:
utilDate = sqlDate;

4. 另類獲得日期的方法:
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

ps:1. java.util.Date類中的getYear()要加上1900才可得到實(shí)際值,getMonth()則要加上1。
        2. 字符串到Date的轉(zhuǎn)換: Date.valueOf(str),記得引包的時(shí)候要引sql的Date包,不是util的Date包
        3. 字符串到Timestamp 的轉(zhuǎn)換Timestamp ts = Timestamp.valueOf(time);

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多