Oracle日期时间用法.docx

上传人:b****2 文档编号:2460501 上传时间:2022-10-29 格式:DOCX 页数:13 大小:21.33KB
下载 相关 举报
Oracle日期时间用法.docx_第1页
第1页 / 共13页
Oracle日期时间用法.docx_第2页
第2页 / 共13页
Oracle日期时间用法.docx_第3页
第3页 / 共13页
Oracle日期时间用法.docx_第4页
第4页 / 共13页
Oracle日期时间用法.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Oracle日期时间用法.docx

《Oracle日期时间用法.docx》由会员分享,可在线阅读,更多相关《Oracle日期时间用法.docx(13页珍藏版)》请在冰豆网上搜索。

Oracle日期时间用法.docx

Oracle日期时间用法

Oracle日期时间用法.txt永远像孩子一样好奇,像年轻人一样改变,像中年人一样耐心,像老年人一样睿智。

我的腰闪了,惹祸的不是青春,而是压力。

当女人不再痴缠,不再耍赖,不再喜怒无常,也就不再爱了。

PURGERECYCLEBIN

转一篇oracle日期时间用法的文章,十分有用!

--------------------------------------------------------------

 

相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。

那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。

常用日期型函数

1。

Sysdate当前日期和时间

SQL>Selectsysdatefromdual;

SYSDATE

----------

21-6月-05

2。

Last_day本月最后一天

SQL>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)

SQL>Selectadd_months(sysdate,2)fromdual;

ADD_MONTHS

----------

21-8月-05

4。

Months_between(f,s)日期f和s间相差月数

SQL>selectmonths_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fromdual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))

----------------------------------------------------------

-4.6966741

5。

NEXT_DAY(d,day_of_week)

返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。

参数"day_of_week"必须为该星期中的某一天。

SQL>SELECTnext_day(to_date('20050620','YYYYMMDD'),1)FROMdual;

NEXT_DAY(T

----------

26-6月-05

6。

current_date()返回当前会话时区中的当前日期

date_value:

=current_date

SQL>columnsessiontimezonefora15

SQL>selectsessiontimezone,current_datefromdual;

SESSIONTIMEZONECURRENT_DA

-------------------------

+08:

0013-11月-03

SQL>altersessionsettime_zone='-11:

00'2/

会话已更改。

SQL>selectsessiontimezone,current_timestampfromdual;

SESSIONTIMEZONECURRENT_TIMESTAMP

---------------------------------------------------

-11:

0012-11月-0304.59.13.668000下午-11:

00

7。

current_timestamp()以timestampwithtimezone数据类型返回当前会话时区中的当前日期

SQL>selectcurrent_timestampfromdual;

CURRENT_TIMESTAMP

---------------------------------------------------------------------------

21-6月-0510.13.08.220589上午+08:

00

8。

dbtimezone()返回时区

SQL>selectdbtimezonefromdual;

DBTIME

------

-08:

00

9。

extract()找出日期或间隔值的字段值

date_value:

=extract(date_fieldfrom[datetime_value|interval_value])

SQL>selectextract(monthfromsysdate)"ThisMonth"fromdual;

ThisMonth

----------

6

SQL>selectextract(yearfromadd_months(sysdate,36))"Years"fromdual;

Years

----------

2008

10。

localtimestamp()返回会话中的日期和时间

SQL>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是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

 

现在给出一些实践后的用法:

1。

上月末天:

SQL>selectto_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd')LastDayfrom

dual;

LASTDAY

----------

2005-05-31

2。

上月今天

SQL>selectto_char(add_months(sysdate,-1),'yyyy-MM-dd')PreTodayfromdual;

 

PRETODAY

----------

2005-05-21

3.上月首天

SQL>selectto_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd')firstDayfromdual;

FIRSTDAY

----------

2005-05-01

4.按照每周进行统计

SQL>selectto_char(sysdate,'ww')fromdualgroupbyto_char(sysdate,'ww');

TO

--

25

5。

按照每月进行统计

SQL>selectto_char(sysdate,'mm')fromdualgroupbyto_char(sysdate,'mm');

TO

--

06

6。

按照每季度进行统计

SQL>selectto_char(sysdate,'q')fromdualgroupbyto_char(sysdate,'q');

T

-

2

7。

按照每年进行统计

SQL>selectto_char(sysdate,'yyyy')fromdualgroupbyto_char(sysdate,'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,'MM')=to_char(sysdate,'MM')--找出当前月份的周五的日期

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,'MM')=to_char(sysdate,'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。

9.oracle中时间运算

内容如下:

1、oracle支持对日期进行运算

2、日期运算时是以天为单位进行的

3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可

4、进行时间进制转换时注意加括号,否则会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1