1. 程式人生 > >Oracle資料庫date型別與Java中Date的聯絡與轉化

Oracle資料庫date型別與Java中Date的聯絡與轉化

以下是對Java中的日期物件與Oracle中的日期之間的區別與聯絡做點說明,以期對大家有所幫助。
new Date():分配 Date 物件並初始化此物件,以表示分配它的時間(精確到毫秒),就是系統當前。
new Date(long date) : 分配 Date 物件並初始化此物件,以表示自從標準基準時間
    (稱為“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。
long getTime() :返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 物件表示的毫秒數。
String toString() :把此 Date 物件轉換為以下形式的
    String: dow mon dd hh:mm:ss zzz yyyy
    其中: dow 是一週中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
 
*****************************************
static Calendar getInstance() :使用預設時區和語言環境獲得一個日曆。
 Date getTime() 返回一個表示此 Calendar 時間值(從曆元至現在的毫秒偏移量)的 Date 物件。
long getTimeInMillis() :返回此 Calendar 的時間值,以毫秒為單位。
void setTime(Date date) :使用給定的 Date 設定此 Calendar 的時間。
void setTimeInMillis(long millis) :用給定的 long 值設定此 Calendar 的當前時間值。
 

**** *************************************
new SimpleDateFormate("yyyy-MM-dd hh:mm:ss").format(new Date());返回String類物件

 
總結:
1、獲得系統當前時間
    獲得long型: System.currentTimeMillis()
    獲得Data型:new Data();
    獲得Calendar型:
            Calendar c = Calendar.getInstance();
            c.setTime(System.currentTimeMillis();
    通常獲得Calendar後,可以對各個欄位進操作;
2、時間的各種型別之間的轉換:
    Calendar 到Date:c.getTime() 返回一個Date物件
    Date 到 Calendar:c.setTime():返回一個Calendar物件
3、關於資料庫中時間的儲存物件
    (1)表示日期和時間的DATA型別,DATA欄位中儲存的值包含有與世紀、年、月、日、小時、分鐘、和秒相對應的“組成部分”,它通過不同的方法顯示和操作,它有效地獨立於任何塔頂字串格式
    (2)從Oracle 9i開始提供TIMESTAMP型別是DATE型別的有效擴充套件形式,它提供更大的時間精度,支援多大九位的小孩,同時還能儲存時區資訊
    (3)從Oracle 9i開始INTERVAL型別,它支援儲存時間差,並且可以與DATE或者TIMESTAMP加法運算以生成一個新的DATE或者TIMESTAMP

    使用SYSDATE選擇當前的系統時間,返回DATE型別的值,是資料庫所在的作業系統的當前日期和時間
    DATE型別的內部表示形式:執行select DUMP(sysdate) from dual;
    Typ=13 Len=8: 218,7,3,23,11,27,11,0 結果中逗號分割的值對應於Oracle儲存日期和時間的每個部分,(從世紀到秒)所使用的位元組
4、DATE物件與字串之間進行轉換
    TO_DAT()和TO_CHAR():這兩個函式都有三個引數,一個是要轉化的值,一個是可選的格式掩碼和一個用於指定語言的可選字串
    to
        select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
        select to_date('20100323','YYYYMMDD') from dual;
        select ename, to_char(hiredate,'ddthMon,YYYY') from emp
        where hiredate between
        to_date('1980-01-01','YYYY-MM-DD')
        and
        to_date('1985-01-01','YYYY-MM-DD')
5、常用操作
    把程式的資料存到資料庫中:
        當程式中是String 型別時,SQL文應該用上
        to_date(hiredate,'yyyy-mm-dd hh24:mi:ss')這樣放到資料庫中就是date型別
        當程式中是Date型別時,必須先轉為String型別,利用
        new SimpleDateFormate("yyyy-MM-dd hh:mm:ss").format(new Date())轉化
    把資料庫中資料取出時
        要使用to_char(hiredate,'YYYY-MM-DD HH24:MI:SS')變為String型別,
        還可以繼續利用java.sql.Date.valueOf(String s)
        將 JDBC 日期轉義形式的字串轉換成 Date 值。
6、取得Oracle資料庫時間並存到Java中
    從資料庫date取得並轉為java.util.Date型別
    方法一: select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') as current_time from dual 取得字串
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String dateString = format.parse(map.get("CURRENT_TIME"));解析後取得Date的型別: Sat Jul 03 13:32:46 CST 2010
    format.format(dateString);然後再格式化成想要的格式字串
    format.format(dateString);將Date型別轉為想要的格式。但是型別為String。在想變回來時在用parse()方法.
    方法一: select (sysdate - 8 / 24 - to_date('1970-01-01', 'yyyy-mm-dd')) * 86400000 current_milli from dual 取得java.math.BigDecimal型別
        BigDecimal b = (BigDecimal)dateMap.get("CURRENT_MILLI");
        Long dateLong = b.longValue();
        new Date(dateLong);取得Date物件,可以處理