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类型,如下:

 

本文出自 “CTO到CEO的过程” 博客,谢绝转载!

你可能感兴趣的:(java,oracle,的)