小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java.util.date 與 java.sql.date區(qū)別和轉(zhuǎn)換

 阿九 2011-03-17

Java.util.date 與 java.sql.date區(qū)別和轉(zhuǎn)換

(2009-11-30 15:00:51)
標(biāo)簽:

it

分類: JavaSE

java.util.Date 就是在除了SQL語句的情況下面使用
java.sql.Date 是針對(duì)SQL語句使用的,它只包含日期而沒有時(shí)間部分
它都有g(shù)etTime方法返回毫秒數(shù),自然就可以直接構(gòu)建
java.util.Date d = new java.util.Date(sqlDate.getTime());
插入日期 參數(shù)選用java.util.Date類型,插入時(shí)轉(zhuǎn)化pstmt.setDate( new java.sql.Date(java.util.Date.getTime()))

--------------------------------------------------------------------------------
繼承關(guān)系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具體的轉(zhuǎn)換關(guān)系就是java.util.Date d=new java.util.Date (new Java.sql.Date());

--------------------------------------------------------------------------------
sql.date,一般是在數(shù)據(jù)庫的時(shí)間字段,util.date一般是日常日期字段

--------------------------------------------------------------------------------
java.sql.Date主要是用于sql中的!
而java.util.Date用語一般的環(huán)境下都行!

--------------------------------------------------------------------------------

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       java.util.Date utilDate=new Date();     
       java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());       
       java.sql.Time sTime=new java.sql.Time(utilDate.getTime());  
       java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
      System.out.println(utilDate.getYear());

這里所有時(shí)間日期都可以被SimpleDateFormat格式化format()

f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)

java.sql.Date sqlDate=java.sql.Date.valueOf("2005-12-12");
     
       utilDate=new java.util.Date(sqlDate.getTime());

-----------------------------------------------------------------------

另類取得年月日的方法:

import java.text.SimpleDateFormat;

import java.util.*;

java.util.Date date = new java.util.Date();

//如果希望得到Y(jié)YYYMMDD的格式

SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");

String dateFormat=sy1.format(date);

//如果希望分開得到年,月,日

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);


=============================================================

1、將java.util.Date 轉(zhuǎn)換為 java.sql.Date

java.sql.Date sd;

java.util.Date ud;

//initialize the ud such as ud = new java.util.Date();


sd = new java.sql.Date(ud.getTime());


2、若要插入到數(shù)據(jù)庫并且相應(yīng)的字段為Date類型

可使用PreparedStatement.setDate(int ,java.sql.Date)方法

其中的java.sql.Date可以用上面的方法得到


也可以用數(shù)據(jù)庫提供TO_DATE函數(shù)

比如 現(xiàn)有 ud

TO_DATE(new SimpleDateFormat().format(ud,"yyyy-MM-dd HH:mm:ss"),

"YYYY-MM-DD HH24:MI:SS")

注意java中表示格式和數(shù)據(jù)庫提供的格式的不同


sql="update tablename set timer=to_date('"+x+"','yyyymmddhh24miss') where ....."


這里的x為變量為類似:20080522131223

 

3、如何將"yyyy-mm-dd"格式的字符串轉(zhuǎn)換為java.sql.Date


方法1


SimpleDateFormat bartDateFormat =   new SimpleDateFormat("yyyy-MM-dd");

String dateStringToParse = "2007-7-12";

try{

       java.util.Date date = bartDateFormat.parse(dateStringToParse);

       java.sql.Date sqlDate = new java.sql.Date(date.getTime());

       System.out.println(sqlDate.getTime());

}

catch (Exception ex) {

     System.out.println(ex.getMessage());

}

 

方法2

String    strDate      "2002-08-09";  

StringTokenizer    st      new    StringTokenizer(strDate,    "-");  

java.sql.Date    date      new    java.sql.Date(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));

java.util.Date和java.sql.Date的區(qū)別

java.sql.Date,java.sql.Time和java.sql.Timestamp三個(gè)都是java.util.Date的子類(包裝類)。


但是為什么java.sql.Date類型的值插入到數(shù)據(jù)庫中Date字段中會(huì)發(fā)生數(shù)據(jù)截取呢?


java.sql.Date是為了配合SQL DATE而設(shè)置的數(shù)據(jù)類型。“規(guī)范化”的java.sql.Date只包含年月日信息,時(shí)分秒毫秒都會(huì)清零。格式類似:YYYY-MM-DD。當(dāng)我們調(diào)用ResultSet的

getDate()方法來獲得返回值時(shí),java程序會(huì)參照"規(guī)范"的java.sql.Date來格式化數(shù)據(jù)庫中的數(shù)值。因此,如果數(shù)據(jù)庫中存在的非規(guī)范化部分的信息將會(huì)被劫取。

 

在sun提供的ResultSet.java中這樣對(duì)getDate進(jìn)行注釋的:

Retrieves the of the designated column in the current row of this <code>ResultSet</code> object as a “java.sql.Date” object in the Java programming

language.

 

同理。如果我們把一個(gè)java.sql.Date值通過PrepareStatement的setDate方法存入數(shù)據(jù)庫時(shí),java程序會(huì)對(duì)傳入的java.sql.Date規(guī)范化,非規(guī)范化的部分將會(huì)被劫取。然而,我們

java.sql.Date一般由java.util.Date轉(zhuǎn)換過來,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).

顯然,這樣轉(zhuǎn)換過來的java.sql.Date往往不是一個(gè)規(guī)范的java.sql.Date.要保存java.util.Date的精確值,

我們需要利用java.sql.Timestamp.

Calendar:


Calendar calendar=Calendar.getInstance();

//獲得當(dāng)前時(shí)間,聲明時(shí)間變量

int year=calendar.get(Calendar.YEAR);

//得到年

int month=calendar.get(Calendar.MONTH);

//得到月,但是,月份要加上1

month=month+1;

int date=calendar.get(Calendar.DATE);

//獲得日期

String today=""+year+"-"+month+"-"+date+"";


注:本文轉(zhuǎn)自http://chendang./blog/323069僅供學(xué)習(xí)參考

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(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)論公約

    類似文章 更多