Date在Java和Oracle下的不同用法

    DateJavaOracle下的不同用法

Oracle中常用的日期函數

Add_Months(d,n):d—日期;n—月數:給指定日期加上指定月數後的日期

Egselect add_months(sysdate,2) from dual

 

Months_between(d1,d2):返回兩個日期之間的月數

Eg

 

Last_day(d):返回指定日期當月的最後一天的日期

Egselect last_day(sysdate) from dual

 

Next_dayd,day):返回指定日期下一個星期幾的日期

Eg:      select next_day(sysdate,星期三) from dual;

      select next_day(sysdate,4) from dual;

extract(fmt from d):fmt—日期中的特定部分;d—日期:提取日期的特定部分

Egselect extract(month from sysdate) from dual;

 

轉換函數

To_char(d(n),fmt):轉換爲字符串格式:d—日期,n—爲數字,fmt爲指定日期或數字的格式

Egselect to_char(sysdate,'yyyyMMdd HH24:mi:ss') from dual(轉換日期格式)

  select to_char( 87686,'$9999999.999') from dual(轉換數字,如:薪資)

 

to_date(str,fmt):將字符串轉換爲日期;str-字符串;fmt-轉換格式

注意:Oralce默認日期格式爲“DD-MON-YY”,不能識別“yyyy-mm-dd”格式,除非使用to_date()轉換

Egselect to_date('20120501','yyyy-mm-dd') from dual;

附加:to_date(str,fmt) fmt的轉換格式的注意:

一般採用yyyy-MM-dd HH:mm:ss的格式作爲格式進行轉換,但是在Oracle中會引起錯誤

Eg: select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不區分大小寫,MMmm被認爲是相同的格式代碼,所以OracleSQL採用了mi代替分鐘。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

另要以24小時的形式顯示出來要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi
是分鐘
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm
會顯示月份

Oracle中正確的format格式:

 

Localtimestamp : 返回回會話中的日期和時間

Egselect localtimestamp from dual;

格式:

--------------------------瞭解--------------------------------

注:

Trunc()函數的用法:

/**************日期********************/
1.select trunc(sysdate) from dual  --2011-3-18  今天的日期爲2011-3-18

2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回當月第一天.

3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回當年第一天

4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回當前年月日

5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回當年第一天

6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回當前星期的第一天

7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   當前時間爲14:41   

8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   TRUNC()函數沒有秒的精確

 

/***************數字********************/

/*

TRUNCnumber,num_digits 

Number 需要截尾取整的數字。 

Num_digits 用於指定取整精度的數字。Num_digits 的默認值爲0

TRUNC()函數截取時不進行四捨五入

*/

9.select trunc(123.458) from dual –123

10.select trunc(123.458,0) from dual –123

11.select trunc(123.458,1) from dual --123.4

12.select trunc(123.458,-1) from dual –120

13.select trunc(123.458,-4) from dual –0

14.select trunc(123.458,4) from dual  --123.458

15.select trunc(123) from dual  --123

16.select trunc(123,1) from dual –123

17.select trunc(123,-1) from dual –120

JavaDate的用法和格式轉換

import java.text.SimpleDateFormat;

javaDate日期格式轉換(SimpleDateFormat):

 

GMT(Greenwich Mean Time)代表格林尼治標準時間 

CST卻同時可以代表如下 4 個不同的時區: 

Central Standard Time (USA) UT-6:00

Central Standard Time (Australia) UT+9:30

China Standard Time UT+8:00

Cuba Standard Time UT-4:00

可見,CST可以同時表示美國,澳大利亞,中國,古巴四個國家的標準時間。 

通過 Java 獲取的CST時間用的是China Standard Time,而客戶端JavaScript則默認採用的是美國的中部時間。 

所以將 Fri Aug 28 09:37:46 CST 2009 加上 6 個小時,再加上 8 個小時,就等於 Fri Aug 28 2009 23:37:46 GMT+0800 

可見,在以後的編程中爲了避免錯誤,還是不要使用CST時間,而儘量採用GMT時間。中國的時間就是GMT時間+8小時

 

 當日期格式爲Sat May 12 00:00:00 CST 2012 類型時:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US); {第四種構造方法}

Date d=sdf.parse(StringUtil.notNull(itemMap.get("deliveryDate")));

sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");{第二種構造方法}

 

format類型,如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章