Oracle日期时间用法Word格式.docx
《Oracle日期时间用法Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle日期时间用法Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
Selectlast_day(sysdate)fromdual;
LAST_DAY(S
30-6月-05
3。
Add_months(d,n)当前日期d后推n个月
用于从一个日期值增加或减少一些月份
date_value:
=add_months(date_value,number_of_months)
Selectadd_months(sysdate,2)fromdual;
ADD_MONTHS
21-8月-05
4。
Months_between(f,s)日期f和s间相差月数
selectmonths_between(sysdate,to_date('
2005-11-12'
'
yyyy-mm-dd'
))fromdual;
MONTHS_BETWEEN(SYSDATE,TO_DATE('
YYYY-MM-DD'
))
----------------------------------------------------------
-4.6966741
5。
NEXT_DAY(d,day_of_week)
返回由"
day_of_week"
命名的,在变量"
d"
指定的日期之后的第一个工作日的日期。
参数"
必须为该星期中的某一天。
SELECTnext_day(to_date('
20050620'
YYYYMMDD'
),1)FROMdual;
NEXT_DAY(T
26-6月-05
6。
current_date()返回当前会话时区中的当前日期
=current_date
columnsessiontimezonefora15
selectsessiontimezone,current_datefromdual;
SESSIONTIMEZONECURRENT_DA
-------------------------
+08:
0013-11月-03
altersessionsettime_zone='
-11:
00'
2/
会话已更改。
selectsessiontimezone,current_timestampfromdual;
SESSIONTIMEZONECURRENT_TIMESTAMP
---------------------------------------------------
0012-11月-0304.59.13.668000下午-11:
00
7。
current_timestamp()以timestampwithtimezone数据类型返回当前会话时区中的当前日期
selectcurrent_timestampfromdual;
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
21-6月-0510.13.08.220589上午+08:
00
8。
dbtimezone()返回时区
selectdbtimezonefromdual;
DBTIME
------
-08:
9。
extract()找出日期或间隔值的字段值
=extract(date_fieldfrom[datetime_value|interval_value])
selectextract(monthfromsysdate)"
ThisMonth"
fromdual;
ThisMonth
6
selectextract(yearfromadd_months(sysdate,36))"
Years"
Years
2008
10。
localtimestamp()返回会话中的日期和时间
selectlocaltimestampfromdual;
LOCALTIMESTAMP
21-6月-0510.18.15.855652上午
常用日期数据格式(该段为摘抄)
Y或YY或YYY年的最后一位,两位或三位Selectto_char(sysdate,’YYY’)fromdual;
002表示2002年
SYEAR或YEARSYEAR使公元前的年份前加一负号Selectto_char(sysdate,’SYEAR’)fromdual;
-1112表示公元前1112年
Q季度,1~3月为第一季度Selectto_char(sysdate,’Q’)fromdual;
2表示第二季度①
MM月份数Selectto_char(sysdate,’MM’)fromdual;
12表示12月
RM月份的罗马表示Selectto_char(sysdate,’RM’)fromdual;
IV表示4月
Month用9个字符长度表示的月份名Selectto_char(sysdate,’Month’)fromdual;
May后跟6个空格表示5月
WW当年第几周Selectto_char(sysdate,’WW’)fromdual;
24表示2002年6月13日为第24周
W本月第几周Selectto_char(sysdate,’W’)fromdual;
2002年10月1日为第1周
DDD当年第几,1月1日为001,2月1日为032Selectto_char(sysdate,’DDD’)fromdual;
3632002年12月29日为第363天
DD当月第几天Selectto_char(sysdate,’DD’)fromdual;
0410月4日为第4天
D周内第几天Selectto_char(sysdate,’D’)fromdual;
52002年3月14日为星期一
DY周内第几天缩写Selectto_char(sysdate,’DY’)fromdual;
SUN2002年3月24日为星期天
HH或HH1212进制小时数Selectto_char(sysdate,’HH’)fromdual;
02午夜2点过8分为02
HH2424小时制Selectto_char(sysdate,’HH24’)fromdual;
14下午2点08分为14
MI分钟数(0~59)Selectto_char(sysdate,’MI’)fromdual;
17下午4点17分
SS秒数(0~59)Selectto_char(sysdate,’SS’)fromdual;
2211点3分22秒
提示注意不要将MM格式用于分钟(分钟应该使用MI)。
MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。
现在给出一些实践后的用法:
上月末天:
selectto_char(add_months(last_day(sysdate),-1),'
yyyy-MM-dd'
)LastDayfrom
dual;
LASTDAY
2005-05-31
上月今天
selectto_char(add_months(sysdate,-1),'
)PreTodayfromdual;
PRETODAY
2005-05-21
3.上月首天
selectto_char(add_months(last_day(sysdate)+1,-2),'
)firstDayfromdual;
FIRSTDAY
2005-05-01
4.按照每周进行统计
selectto_char(sysdate,'
ww'
)fromdualgroupbyto_char(sysdate,'
);
TO
--
25
按照每月进行统计
mm'
06
按照每季度进行统计
q'
T
-
2
按照每年进行统计
yyyy'
TO_C
----
2005
8.要找到某月中所有周五的具体日期
selectto_char(t.d,'
YY-MM-DD'
)from(
selecttrunc(sysdate,'
MM'
)+rownum-1asd
fromdba_objects
whererownum<
32)t
whereto_char(t.d,'
)=to_char(sysdate,'
)--找出当前月份的周五的日期
andtrim(to_char(t.d,'
Day'
))='
星期五'
--------
03-05-02
03-05-09
03-05-16
03-05-23
03-05-30
如果把whereto_char(t.d,'
)改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。
9.oracle中时间运算
内容如下:
1、oracle支持对日期进行运算
2、日期运算时是以天为单位进行的
3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可
4、进行时间进制转换时注意加括号,否则会