---------------------------------------------日期/时间函数-----------------------------------------------
--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分钟数(0~59)
SELECTTO_CHAR(SYSDATE,'MI')FROMDUAL;
提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。
SS秒数(0~59)
SELECTTO_CHAR(SYSDATE,'SS')FROMDUAL;
--------------------------------------------------------------------------------------作者:潇湘隐者 出处:/kerrycode/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
如果觉得《ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)》对你有帮助,请点赞、收藏,并留下你的观点哦!