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 -- 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()函数没有秒的精确
/***************数字********************/
/*
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类型,如下:
本文出自 “CTO到CEO的过程” 博客,谢绝转载!