Date在Java和Oracle下的不同用法
Oracle中常用的日期函數:
Add_Months(d,n):d—日期;n—月數:給指定日期加上指定月數後的日期
Eg:select add_months(sysdate,2) from dual;
Months_between(d1,d2):返回兩個日期之間的月數
Eg:
Last_day(d):返回指定日期當月的最後一天的日期
Eg:select last_day(sysdate) from dual
Next_day(d,day):返回指定日期下一個星期幾的日期
Eg: select next_day(sysdate,’星期三’) from dual;
select next_day(sysdate,4) from dual;
extract(fmt from d):fmt—日期中的特定部分;d—日期:提取日期的特定部分
Eg:select extract(month from sysdate) from dual;
轉換函數
To_char(d(n),fmt):轉換爲字符串格式:d—日期,n—爲數字,fmt爲指定日期或數字的格式
Eg:select 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()轉換
Eg:select 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中不區分大小寫,MM和mm被認爲是相同的格式代碼,所以Oracle的SQL採用了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 : 返回回會話中的日期和時間
Eg:select localtimestamp from dual;
格式:
--------------------------瞭解--------------------------------
注:
Trunc()函數的用法:
/**************日期********************/
1.select trunc(sysdate) from dual --
2.select trunc(sysdate, 'mm') from dual --
3.select trunc(sysdate,'yy') from dual --
4.select trunc(sysdate,'dd') from dual --
5.select trunc(sysdate,'yyyy') from dual --
6.select trunc(sysdate,'d') from dual --
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()函數沒有秒的精確
/***************數字********************/
/*
TRUNC(number,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
Java中Date的用法和格式轉換:
import java.text.SimpleDateFormat;
java中Date日期格式轉換(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類型,如下: