public class Test{
public static void main (String args []){
java.util.Date a = new java.util.Date();
System.out.println(a);
java.sql.Date b = new java.sql.Date(a.getTime());
System.out.println(b);
java.sql.Time c = new java.sql.Time(a.getTime());
System.out.println(c);
java.sql.Timestamp d=new java.sql.Timestamp(a.getTime());
System.out.println(d);
}
}
Mon Apr 03 18:00:34 CST 2006
2006-04-03
18:00:34
2006-04-03 18:00:34.388
1. oracle默認的系統時間就是sysdate函數,儲存的數據形如25-3-200510:55:33
2. java 中取時間的對象是java.util.Date。
3. oracle中對應的時間對象是java.util.Date,java.sql.Time,java.sql.Timestamp、它們都是是java.util.Date的子類。
4. oracle中與date操作關系最大的就是兩個轉換函數:to_date(),to_char()。to_date()一般用於寫入日期到數據庫時用到的函數。to_char()一般用於從數據庫讀入日
期時用到的函數。
DATE、TIME 和 TIMESTAMP:
SQL 定義了三種與時間有關的數據類型:DATE 由日、月和年組成。TIME 由小時、分鍾和秒組成。 TIMESTAMP 將 DATE 和 TIME 結合起來,並添加了納秒域。
標准 Java 類 java.util.Date 可提供日期和時間信息。但由於該類包含 DATE 和 TIME 信息而沒有 TIMESTAMP 所需的納秒,因此並不與上述三種 SQL 類型完全相配。
因此我們定義了 java.util.Date 的三種子類。它們是:
1. 有關 SQL DATE 信息的 java.sql.Date
2. 有關 SQL TIME 信息的 java.sql.Time
3. 有關 SQL TIMESTAMP 信息的 java.sql.Timestamp
對於 java.sql.Time,java.util.Time 基本類的小時、分鍾、秒和毫秒域被設置為零。 對於 java.sql.Date,java.util.Date 基本類的年、月和日域被分別設置為 1970 年 1
月 1 日。這是在 Java 新紀元中的“零”日期。java.sql.date中的日期可以和標准的SQL語句中含有日期的字段進行比較.java.sql.Timestamp 類通過添加納秒域來擴展
java.util.Date。
oracle中兩個轉換函數:
1. to_date() 作用將字符類型按一定格式轉化為日期類型:
具體用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者為字符串,后者為轉換日期格式,注意,前后兩者要以一對應。如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd
hh24:mi:ss'') 將得到具體的時間。
2. to_char():將日期轉按一定格式換成字符類型:
具體用法:to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'')
to_date()與24小時制表示法及mm分鍾的顯示:
在使用Oracle的to_date函數來做日期轉換時,很多Java程序員也許會直接的采用“yyyy-MM-dd HH:mm:ss”的格式作為格式進行轉換,但是在Oracle中會引起錯誤:“ORA 01810
格式代碼出現兩次”。
如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不區分大小寫,MM和mm被認為是相同的格式代碼,所以Oracle的SQL采用了mi代替分鍾。 oracle默認的系統時間就是sysdate函數,儲存的數據形如2005-3-2510:55:33
,java 中取時間的對象是java.util.Date。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual
在java對oracle的操作中,對日期字段操作的例子:
表 book 中有name varchar2(20)//書籍名稱,buydate Date //購買日期 兩個字段。
已經創建了數據庫連接Connection conn;
方法一、使用java.sql.Date實現比較簡單的yyyy-mm-dd格式日期。java.sql.Date不支持時間格式。切記不要使用new java.sql.Date(int year,int month,int date),因為還要處
理時間差問題。
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
java.sql.Date buydate=java.sql.Date.valueOf("2005-06-08");
pstmt.setString(1, "Java編程思想");
pstmt.setDate(2,buydate );
pstmt.execute();
方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
pstmt.setString(1, "Java編程思想");
pstmt.setTimestamp(2,buydate );
pstmt.execute();
方法三、使用oracle 的to_date內置函數
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
String buydate="2004-06-08 05:33:99";
pstmt.setString(1, "Java編程思想");
pstmt.setString(2,buydate );
pstmt.execute();
附:oracle日期格式參數含義說明
d:一周中的星期幾
day:天的名字,使用空格填充到9個字符
dd:月中的第幾天
ddd:年中的第幾天
dy:天的簡寫名
iw: ISO標准的年中的第幾周
iyyy:ISO標准的四位年份
yyyy:四位年份
yyy,yy,y:年份的最后三位,兩位,一位
hh: 小時,按12小時計
hh24:小時,按24小時計
mi:分
ss:秒
mm:月
mon:月份的簡寫
month:月份的全名
w:該月的第幾個星期
ww:年中的第幾個星期
=====================
sql111= select * from logincount where logtime = to_date('2009-11-30','yyyy-MM-dd')
st = con.prepareStatement("select * from logincount where logtime = to_date('"+ new java.sql.Date(date.getTime())+"','yyyy-MM-dd')");
獲取當前時間的方法:
Java中獲得當前時間的方法
有兩種方法:
方法一:用java.util.Date類來實現,並結合java.text.DateFormat類來實現時間的格式化,看下面代碼:
import java.util.*;
import java.text.*;
//以下默認時間日期顯示方式都是漢語語言方式
//一般語言就默認漢語就可以了,時間日期的格式默認為MEDIUM風格,比如:2008-6-16 20:54:53
//以下顯示的日期時間都是再Date類的基礎上的來的,還可以利用Calendar類來實現見類TestDate2.java
public class TestDate {
public static void main(String[] args) {
Date now = new Date();
Calendar cal = Calendar.getInstance();
DateFormat d1 = DateFormat.getDateInstance(); //默認語言(漢語)下的默認風格(MEDIUM風格,比如:2008-6-16 20:54:53)
String str1 = d1.format(now);
DateFormat d2 = DateFormat.getDateTimeInstance();
String str2 = d2.format(now);
DateFormat d3 = DateFormat.getTimeInstance();
String str3 = d3.format(now);
DateFormat d4 = DateFormat.getInstance(); //使用SHORT風格顯示日期和時間
String str4 = d4.format(now);
DateFormat d5 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //顯示日期,周,時間(精確到秒)
String str5 = d5.format(now);
DateFormat d6 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //顯示日期。時間(精確到秒)
String str6 = d6.format(now);
DateFormat d7 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //顯示日期,時間(精確到分)
String str7 = d7.format(now);
DateFormat d8 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //顯示日期,時間(精確到分)
String str8 = d8.format(now);//與SHORT風格相比,這種方式最好用
System.out.println("用Date方式顯示時間: " + now);//此方法顯示的結果和Calendar.getInstance().getTime()一樣
System.out.println("用DateFormat.getDateInstance()格式化時間后為:" + str1);
2 Java中獲得當前時間的方法
System.out.println("用DateFormat.getDateTimeInstance()格式化時間后為:" + str2);
System.out.println("用DateFormat.getTimeInstance()格式化時間后為:" + str3);
System.out.println("用DateFormat.getInstance()格式化時間后為:" + str4);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化時間后為:" + str5);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化時間后為:" + str6);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化時間后為:" + str7);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化時間后為:" + str8);
}
}
運行結果:
用Date方式顯示時間: Mon Jun 16 20:54:53 CST 2008
用DateFormat.getDateInstance()格式化時間后為:2008-6-16
用DateFormat.getDateTimeInstance()格式化時間后為:2008-6-16 20:54:53
用DateFormat.getTimeInstance()格式化時間后為:20:54:53
用DateFormat.getInstance()格式化時間后為:08-6-16 下午8:54
用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化時間后為
:2008年6月16日 星期一 下午08時54分53秒 CST
用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化時間后為
:2008年6月16日 下午08時54分53秒
用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化時間后
為:08-6-16 下午8:54
用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化時間
后為:2008-6-16 20:54:53
方法二:用java.util.Calendar類來實現,看下面:
import java.util.*;
import java.text.*;
//以下是利用Calendar類來實現日期時間的,和Date類相比較比較簡單
public class TestDate2 {
public static void main(String[] args) {
Calendar ca = Calendar.getInstance();
int year = ca.get(Calendar.YEAR);//獲取年份
int month=ca.get(Calendar.MONTH);//獲取月份
int day=ca.get(Calendar.DATE);//獲取日
int minute=ca.get(Calendar.MINUTE);//分
int hour=ca.get(Calendar.HOUR);//小時
int second=ca.get(Calendar.SECOND);//秒
int WeekOfYear = ca.get(Calendar.DAY_OF_WEEK);
System.out.println("用Calendar.getInstance().getTime()方式顯示時間: " + ca.getTime());
System.out.println("用Calendar獲得日期是:" + year +"年"+ month +"月"+ day + "日");
System.out.println("用Calendar獲得時間是:" + hour +"時"+ minute +"分"+ second +"秒");
System.out.println(WeekOfYear);//顯示今天是一周的第幾天(我做的這個例子正好是周二,故結果顯示2,如果你再周6運行,那么顯示6)
}
}
運行結果是:
用Calendar.getInstance().getTime()方式顯示時間: Mon Jun 16 21:54:21 CST 2008
用Calendar獲得日期是:2008年5月16日
用Calendar獲得時間是:9時54分21秒
原作者不詳,來源於網絡
