ORACLE 常用函数——日期/时间函数
来源:互联网 发布:检察院 大数据 公司 编辑:程序博客网 时间:2024/06/06 09:07
- SYSDATE
用来得到系统的当前日期
SELECT SYSDATE FROM DUAL; - ADD_MONTHS
增加或减去月份
SELECT TO_CHAR(ADD_MONTHS(TO_DATE( ' 20080818 ' , ' YYYYMMDD ' ), 2 ), ' YYYY-MM-DD ' ) FROM DUAL;
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, - 1 ), ' YYYY-MM-DD ' ) FROM DUAL - LAST_DAY
返回日期的最后一天
SELECT LAST_DAY(SYSDATE) FROM DUAL;
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, - 2 )) FROM DUAL; - 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; 文字与格式字符串不匹配 - 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; - NEXT_DAY
返回与制定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期。
-- 星期日 = 1 星期一 = 2 星期二 = 3 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7
SELECT NEXT_DAY(SYSDATE, 2 ) FROM DUAL; - CURRENT_DATE
当前会话时区中的当前日期
SELECT CURRENT_DATE FROM DUAL; - CURRENT_TIMESTAMP
以timestamp with time zone数据类型返回当前会话时区中的当前日期
SELECT CURRENT_TIMESTAMP FROM DUAL; - DBTIMEZONE()
返回时区
SELECT DBTIMEZONE FROM DUAL; - SESSIONTIMEZONE
返回回话时区 其中DBTIMEZONE是数据库的,session是针对当前会话的,因为时区在会话级可以改变
SELECT SESSIONTIMEZONE FROM DUAL;
ALTER SESSION SET TIME_ZONE = ' 8:00 ' ;
SELECT SESSIONTIMEZONE FROM DUAL; - 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; - LOCALTIMESTAMP
返回会话中的日期和时间
SELECT LOCALTIMESTAMP FROM DUAL; - 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;
阅读全文
0 0
- ORACLE 常用函数——日期/时间函数
- ORACLE 常用函数——日期/时间函数
- ORACLE 常用函数——日期/时间函数
- ORACLE 常用函数——日期/时间函数
- ORACLE 常用函数——日期/时间函数
- [oracle] 常用函数 - 日期/时间函数
- oracle常用函数汇总——ORACLE日期时间函数大全
- ORACLE 常用函数——日期/时间函数(感谢潇湘隐者)
- oracle 日期时间函数
- oracle时间日期函数
- oracle时间日期函数
- ORACLE日期时间函数
- ORACLE日期时间函数
- Oracle中时间日期格式转换及常用日期函数
- Oracle 常用日期函数
- Oracle 常用日期函数
- Oracle常用日期函数
- oracle 常用日期函数
- linux进程利用文件通信
- QWebEngine与JS交互
- tensoflow练习2:利用Recurrent Neural Network 进行分类
- iOS 自定义Cell拖拽的另一种形式
- N皇后问题<经典DFS>
- ORACLE 常用函数——日期/时间函数
- Spring+Hibernate双数据源测试Mysql集群读写分离
- SQL连接的几种方式
- 设计模式-18-备忘录模式
- 虚拟机里部署java web工程
- HDU 2008
- Android 不要错过的 7 个完整项目学习
- 【项目实战】——Tree树显示过程核心
- 容斥原理模板