ORACLE 常用函数——日期/时间函数

- -------------------------------------------日期/时间函数-----------------------------------------------
--
1:SYSDATE
用来得到系统的当前日期

SELECT SYSDATE FROM DUAL;



-- 2:ADD_MONTHS
增加或减去月份

SELECT TO_CHAR(ADD_MONTHS(TO_DATE( ' 20080818 ' , YYYYMMDD ' ), 2 ),0); line-height:1.5!important">YYYY-MM-DD ' ) FROM DUAL;


SELECT TO_CHAR(ADD_MONTHS(SYSDATE,128); line-height:1.5!important">- 1 ),255); line-height:1.5!important">FROM DUAL


3:LAST_DAY
返回日期的最后一天

SELECT LAST_DAY(SYSDATE) FROM DUAL;

SELECT LAST_DAY(ADD_MONTHS(SYSDATE,0); line-height:1.5!important">2 )) 4:MONTHS_BETWEEN(date2,date1)
给出date2 - date1的月份

参数的格式需要注意

SELECT MONTHS_BETWEEN(TO_DATE( 2011-05-03 2011-01-23 ' )) SELECT MONTHS_BETWEEN( 19-12月-1999 19-3月-1999 ' )mon_between SELECTMONTHS_BETWEEN('2011-1月-23','2011-9月-1')FROMDUAL;文字与格式字符串不匹配


5:NEW_TIME(date,'this','that')
给出在this时区 = other时区的日期和时间

SELECT TO_CHAR(SYSDATE,0); line-height:1.5!important">YYYY.MM.DDHH24:MI:SS ' )BeiJing_Time,
TO_CHAR(NEW_TIME(SYSDATE,0); line-height:1.5!important">PDT
GMT ' )LOS_ANGELS FROM DUAL;


简写时区
AST
OR ADT大西洋标准时间
HST
OR HDT阿拉斯加—夏威夷时间
BST
OR BDT英国夏令时
MST
OR MDT美国山区时间
CST
OR CDT美国中央时区
NST新大陆标准时间
EST
OR EDT美国东部时间
PST
OR PDT太平洋标准时间
GMT格伦威治标准时间
YST
OR YDTYukon标准时间

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


星期日=1星期一=2星期二=3星期三=4星期四=5星期五=6星期六=7 SELECT NEXT_DAY(SYSDATE,0); line-height:1.5!important">2 ) 7:CURRENT_DATE
当前会话时区中的当前日期

SELECT CURRENT_DATE 8:CURRENT_TIMESTAMP
以timestamp with timezone数据类型返回当前会话时区中的当前日期


SELECT CURRENT_TIMESTAMP 9:DBTIMEZONE()
返回时区

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

SELECT SESSIONTIMEZONE ALTER SESSION SET TIME_ZONE = 8:00 ' ;

11:EXTRACT
找出日期或间隔值的字段值

SELECT EXTRACT( MONTH FROM SYSDATE)" MONTH " DAY FROM SYSDATE) AS " DAY " YEAR YEAR " 12:LOCALTIMESTAMP
返回会话中的日期和时间

SELECT LOCALTIMESTAMP FROM DUAL;

--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;--返回当前年月日

--上月最后一天 SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,0); line-height:1.5!important">1 )),0); line-height:1.5!important">YYYY/MM/DD --:上各月的今天
--上个月第一天 SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1 ,0); line-height:1.5!important">' )FirstDay -按照每周进行统计 WW -按照每月进行统计 MM --按照每季度进行统计 Q -按照每年进行统计 YYYY -要找到某月中所有周五的具体日期 SELECT TO_CHAR(T.D,0); line-height:1.5!important">YY-MM-DD ' )
FROM
(
SELECT TRUNC(SYSDATE,0); line-height:1.5!important">' ) + ROWNUM 1 AS D
FROM DBA_OBJECTS
WHERE ROWNUM < 32
)T
WHERE TO_CHAR(T.D,128); line-height:1.5!important">= TO_CHAR(SYSDATE,0); line-height:1.5!important">' )
AND TRIM(TO_CHAR(T.D,0); line-height:1.5!important">DAY ' )) 星期五 '


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

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

SYEAR或YEARSYEAR使公元前的年份前加一负号
SYEAR FROM DUAL; TWENTYELEVEN


Q季度,
1 ~3月为第一季度
2表示第二季度

MM月份数
04表示4月

RM月份的罗马表示
RM IV表示4月

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

WW当年第几周
24表示2002年6月13日为第24周

W本月第几周
W 2011年04月26日为第4周

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

DD当月第几天
DD FROM DUAL;

D周内第几天
D FROM DUAL;

DY周内第几天缩写
DY FROM DUAL;

HH或HH1212进制小时数
HH FROM DUAL;

HH2424小时制
HH24 FROM DUAL;

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

SS秒数(
SS ------------------------------------------------------------------------------------

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...