失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)

ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)

时间:2020-12-13 04:13:50

相关推荐

ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)

---------------------------------------------日期/时间函数-----------------------------------------------

--1:SYSDATE

用来得到系统的当前日期

SELECTSYSDATEFROMDUAL;

--2:ADD_MONTHS

增加或减去月份

SELECTTO_CHAR(ADD_MONTHS(TO_DATE('0818','YYYYMMDD'),2),'YYYY-MM-DD')FROMDUAL;

SELECTTO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM-DD')FROMDUAL

--3:LAST_DAY

返回日期的最后一天

SELECTLAST_DAY(SYSDATE)FROMDUAL;

SELECTLAST_DAY(ADD_MONTHS(SYSDATE,-2))FROMDUAL;

--4:MONTHS_BETWEEN(date2,date1)

给出date2-date1的月份

--参数的格式需要注意

SELECTMONTHS_BETWEEN(TO_DATE('-05-03','YYYY-MM-DD'),TO_DATE('-01-23','YYYY-MM-DD'))FROMDUAL;

SELECTMONTHS_BETWEEN('19-12月-1999','19-3月-1999')mon_betweenFROMDUAL;

--SELECTMONTHS_BETWEEN('-1月-23','-9月-1')FROMDUAL;文字与格式字符串不匹配

--5:NEW_TIME(date,'this','that')

给出在this时区=other时区的日期和时间

SELECTTO_CHAR(SYSDATE,'YYYY.MM.DDHH24:MI:SS')BeiJing_Time,

TO_CHAR(NEW_TIME(SYSDATE,'PDT','GMT'),'YYYY.MM.DDHH24:MI:SS')LOS_ANGELSFROMDUAL;

简写时区

ASTORADT大西洋标准时间

HSTORHDT阿拉斯加—夏威夷时间

BSTORBDT英国夏令时

MSTORMDT美国山区时间

CSTORCDT美国中央时区

NST新大陆标准时间

ESTOREDT美国东部时间

PSTORPDT太平洋标准时间

GMT格伦威治标准时间

YSTORYDTYukon标准时间

--6:NEXT_DAY

返回与制定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期。

--星期日=1星期一=2星期二=3星期三=4星期四=5星期五=6星期六=7

SELECTNEXT_DAY(SYSDATE,2)FROMDUAL;

--7:CURRENT_DATE

当前会话时区中的当前日期

SELECTCURRENT_DATEFROMDUAL;

--8:CURRENT_TIMESTAMP

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

SELECTCURRENT_TIMESTAMPFROMDUAL;

--9:DBTIMEZONE()

返回时区

SELECTDBTIMEZONEFROMDUAL;

--10:SESSIONTIMEZONE

返回回话时区其中DBTIMEZONE是数据库的,session是针对当前会话的,因为时区在会话级可以改变

SELECTSESSIONTIMEZONEFROMDUAL;

ALTERSESSIONSETTIME_ZONE='8:00';

SELECTSESSIONTIMEZONEFROMDUAL;

--11:EXTRACT

找出日期或间隔值的字段值

SELECTEXTRACT(MONTHFROMSYSDATE)"MONTH"FROMDUAL;

SELECTEXTRACT(DAYFROMSYSDATE)AS"DAY"FROMDUAL;

SELECTEXTRACT(YEARFROMSYSDATE)AS"YEAR"FROMDUAL;

--12:LOCALTIMESTAMP

返回会话中的日期和时间

SELECTLOCALTIMESTAMPFROMDUAL;

--13: TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date 一个日期值 fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去 下面是该函数的使用情况: TRUNC(TO_DATE('24-Nov-1999 08:00 pm'),'dd-mon-yyyy hh:mi am') ='24-Nov-1999 12:00:00 am' TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am' SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL; --返回当年第一天. SELECT TRUNC(SYSDATE,'MM') FROM DUAL; --返回当月第一天. SELECT TRUNC(SYSDATE,'D') FROM DUAL; --返回当前星期的第一天. SELECT TRUNC(SYSDATE,'DD') FROM DUAL;--返回当前年月日

----上月最后一天

SELECTTO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,-1)),'YYYY/MM/DD')FROMDUAL;

----:上各月的今天

SELECTTO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM-DD')FROMDUAL;

----上个月第一天

SELECTTO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE)+1,-2),'YYYY-MM-DD')FirstDayFROMDUAL;

---按照每周进行统计

SELECTTO_CHAR(SYSDATE,'WW')FROMDUAL;

---按照每月进行统计

SELECTTO_CHAR(SYSDATE,'MM')FROMDUAL;

----按照每季度进行统计

SELECTTO_CHAR(SYSDATE,'Q')FROMDUAL;

---按照每年进行统计

SELECTTO_CHAR(SYSDATE,'YYYY')FROMDUAL;

---要找到某月中所有周五的具体日期

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'))='星期五'

下面的内容应该属于格式化函数,但是为了对日期函数做详细叙述,就把TO_CHAR的内容放到这里了

Y或YY或YYY年的最后一位,两位或三位

SELECTTO_CHAR(SYSDATE,'YYY')FROMDUAL;

SELECTTO_CHAR(SYSDATE,'YY')FROMDUAL;

SYEAR或YEARSYEAR使公元前的年份前加一负号

SELECTTO_CHAR(SYSDATE,'SYEAR')FROMDUAL;--TWENTYELEVEN

Q季度,1~3月为第一季度

SELECTTO_CHAR(SYSDATE,'Q')FROMDUAL;--2表示第二季度

MM月份数

SELECTTO_CHAR(SYSDATE,'MM')FROMDUAL;--04表示4月

RM月份的罗马表示

SELECTTO_CHAR(SYSDATE,'RM')FROMDUAL;--IV表示4月

Month用9个字符长度表示的月份名

SELECTTO_CHAR(SYSDATE,'MONTH')FROMDUAL;--4月

WW当年第几周

SELECTTO_CHAR(SYSDATE,'WW')FROMDUAL;--24表示2002年6月13日为第24周

W本月第几周

SELECTTO_CHAR(SYSDATE,'W')FROMDUAL;--04月26日为第4周

DDD当年第几天.1月1日为001,2月1日为032

SELECTTO_CHAR(SYSDATE,'DDD')FROMDUAL;

DD当月第几天

SELECTTO_CHAR(SYSDATE,'DD')FROMDUAL;

D周内第几天

SELECTTO_CHAR(SYSDATE,'D')FROMDUAL;

DY周内第几天缩写

SELECTTO_CHAR(SYSDATE,'DY')FROMDUAL;

HH或HH1212进制小时数

SELECTTO_CHAR(SYSDATE,'HH')FROMDUAL;

HH2424小时制

SELECTTO_CHAR(SYSDATE,'HH24')FROMDUAL;

MI分钟数(059)

SELECTTO_CHAR(SYSDATE,'MI')FROMDUAL;

提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

SS秒数(059)

SELECTTO_CHAR(SYSDATE,'SS')FROMDUAL;

--------------------------------------------------------------------------------------作者:潇湘隐者 出处:/kerrycode/

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

如果觉得《ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。