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

时间:2023-03-08 16:49:03
ORACLE 常用函数 日期/时间函数
---------------------------------------------日期/时间函数-----------------------------------------------
--1: SYSDATE
用来得到系统的当前日期 SELECT SYSDATE FROM DUAL; --2: ADD_MONTHS
增加或减去月份 SELECT TO_CHAR(ADD_MONTHS(TO_DATE('','YYYYMMDD'),2), 'YYYY-MM-DD') FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM-DD') FROM DUAL --3: LAST_DAY
返回日期的最后一天 SELECT LAST_DAY(SYSDATE) FROM DUAL; SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -2)) FROM DUAL; --4: MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份 --参数的格式需要注意 SELECT MONTHS_BETWEEN(TO_DATE('2011-05-03', 'YYYY-MM-DD'), TO_DATE('2011-01-23', 'YYYY-MM-DD')) FROM DUAL; SELECT MONTHS_BETWEEN('19-12月-1999','19-3月-1999') mon_between FROM DUAL; --SELECT MONTHS_BETWEEN('2011-1月-23', '2011-9月-1') FROM DUAL; 文字与格式字符串不匹配 --5: NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间 SELECT TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') BeiJing_Time,
TO_CHAR(NEW_TIME(SYSDATE, 'PDT', 'GMT'), 'YYYY.MM.DD HH24:MI:SS') 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 YDT Yukon标准时间 --6: NEXT_DAY
返回与制定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期。 --星期日 = 1 星期一 = 2 星期二 = 3 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7 SELECT NEXT_DAY(SYSDATE, 2) FROM DUAL; --7: CURRENT_DATE
当前会话时区中的当前日期 SELECT CURRENT_DATE FROM DUAL; --8: CURRENT_TIMESTAMP
以timestamp with time zone数据类型返回当前会话时区中的当前日期 SELECT CURRENT_TIMESTAMP FROM DUAL; --9: DBTIMEZONE()
返回时区 SELECT DBTIMEZONE FROM DUAL; --10: SESSIONTIMEZONE
返回回话时区 其中DBTIMEZONE是数据库的,session是针对当前会话的,因为时区在会话级可以改变 SELECT SESSIONTIMEZONE FROM DUAL; ALTER SESSION SET TIME_ZONE = '8:00'; SELECT SESSIONTIMEZONE FROM DUAL; --11:EXTRACT
找出日期或间隔值的字段值 SELECT EXTRACT(MONTH FROM SYSDATE) "MONTH" FROM DUAL; SELECT EXTRACT(DAY FROM SYSDATE) AS "DAY" FROM DUAL; SELECT EXTRACT(YEAR FROM SYSDATE) AS "YEAR" FROM DUAL; --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, -1)), 'YYYY/MM/DD') FROM DUAL; ----: 上各月的今天
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM-DD') FROM DUAL; ---- 上个月第一天 SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE)+1,-2),'YYYY-MM-DD') FirstDay FROM DUAL; --- 按照每周进行统计 SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL; --- 按照每月进行统计 SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL; ---- 按照每季度进行统计 SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL; --- 按照每年进行统计 SELECT TO_CHAR(SYSDATE, 'YYYY') FROM DUAL; --- 要找到某月中所有周五的具体日期 SELECT TO_CHAR(T.D, 'YY-MM-DD')
FROM
(
SELECT TRUNC(SYSDATE, 'MM') + ROWNUM -1 AS D
FROM DBA_OBJECTS
WHERE ROWNUM < 32
) T
WHERE TO_CHAR(T.D, 'MM') = TO_CHAR(SYSDATE, 'MM')
AND TRIM(TO_CHAR(T.D, 'DAY')) = '星期五' 下面的内容应该属于格式化函数,但是为了对日期函数做详细叙述,就把TO_CHAR的内容放到这里了 Y或YY或YYY 年的最后一位,两位或三位
SELECT TO_CHAR(SYSDATE, 'YYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL; SYEAR或YEAR SYEAR使公元前的年份前加一负号
SELECT TO_CHAR(SYSDATE, 'SYEAR') FROM DUAL; --TWENTY ELEVEN Q 季度,1~3月为第一季度
SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL; -- 2表示第二季度 MM 月份数
SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL; --04表示4月 RM 月份的罗马表示
SELECT TO_CHAR(SYSDATE, 'RM') FROM DUAL; --IV表示4月 Month 用9个字符长度表示的月份名
SELECT TO_CHAR(SYSDATE, 'MONTH') FROM DUAL; -- 4月 WW 当年第几周
SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL; -- 24表示2002年6月13日为第24周 W 本月第几周
SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL; -- 2011年04月26日为第4周 DDD 当年第几天. 1月1日为001,2月1日为032
SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL; DD 当月第几天
SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL; D 周内第几天
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL; DY 周内第几天缩写
SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL; HH或HH12 12进制小时数
SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL; HH24 24小时制
SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL; MI 分钟数(0~59)
SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;
提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。 SS 秒数(0~59)
SELECT TO_CHAR(SYSDATE, 'SS') FROM DUAL; --------------------------------------------------------------------------------------
作者:潇湘隐者