1.时,分,秒,年,月,日等日期的常用取值方法

select hiredate,
to_number(to_char(hiredate,'hh24')) 时,
to_number(to_char(hiredate,'mi')) 分,
to_number(to_char(hiredate,'ss')) 秒,
to_number(to_char(hiredate,'dd')) 日,
to_number(to_char(hiredate,'mm')) 月,
to_number(to_char(hiredate,'yyyy')) 年,
to_number(to_char(hiredate,'ddd')) 年内第几天,
trunc(hiredate,'dd') 一天的开始,
trunc(hiredate,'day') 周初,
trunc(hiredate,'mm') 月初,
last_day(hiredate) 月末,
add_months( trunc(hiredate,'mm'),1) 下月初,
trunc(hiredate,'yy') 年初,
to_char(hiredate,'day') 周几,
to_char(hiredate,'month') 月份
from emp

2.INTERVAL:INTERVAL类型中保存的是时间间隔信息,可以通过对应的INTERVAL 函数得到INTERVAL类型的数据。

select INTERVAL '' year as "year",
INTERVAL '' month as "month",
INTERVAL '' day as "day",
INTERVAL '' hour as "hour",
INTERVAL '' minute as "minute",
INTERVAL '3.15' second as "second",
INTERVAL '2 12:30:59' DAY to second as "DAY to second",
INTERVAL '13-3' year to month as "year to month"
from dual;

3.EXTRACT:与TO_CHAR 一样,EXTRACT可以提取时间字段中的年月日时分秒,不同的是EXTRACT返回的是NUMBER类型,但是EXTRACT不能提取DATE类型中国的时分秒。

select EXTRACT(YEAR from systimestamp) as "year" from dual;

select created,EXTRACT(DAY from created) from dba_objects;

----EXTRACT可以提取INTERVAL中的信息,to_char不行,to_char可以获取日期中的时分秒

select EXTRACT(hour from it) as "hour"
from (select INTERVAL '2 12:30:59‘ DAY to second as it from dual);

4.确定某一年是否为闰年,检查二月月末时哪一天

select to_char(last_day(add_months(trunc(hiredate,'y'),1)),'DD')  as "日"  from emp

5.周的计算,WW和IW的区别:WW算法为每年的一月一日为第一周的开发,date+6为一周接受,IW的算法为星期一至星期日算一周。next_day(date,1||2),1表示下个周末,2 表示下个周一

with x as
(select trunc(sysdate,'YY')+(level-1) as 日期 from dual connect by level<=8)
select 日期, to_char(日期,'d') as d,to_char(日期,'day') as day,next_day(日期,1),
to_char(日期,'ww') as ww, to_char(日期,'iw') as iw from x;

6.本月日历,枚举指定月份所有的日期,转到对应的周信息。

with x1 as
(select to_date('2013-06-01','yyyy-mm-dd') as curdate from dual),
x2 as
(select trunc(curdate,'mm') as bm, add_months(trunc(curdate,'mm'),1) as bnm from x1),
x3 as
(select bm+(level-1) as day from x2 connect by level<=(bnm-bm)),
x4 as
(select to_char(day,'iw') as inWeek,to_char(day,'dd') dd,to_number(to_char(day,'d')) nweek from x3)
select max(case nweek when 2 then dd end) Mon,
max(case nweek when 3 then dd end) Feb,
max(case nweek when 4 then dd end) Wen,
max(case nweek when 5 then dd end) Thu,
max(case nweek when 6 then dd end) Fri,
max(case nweek when 7 then dd end) Sat,
max(case nweek when 1 then dd end) Sun
from x4
group by inWeek
order by inWeek;

7.Oracle的两个分析函数Lag和lead,分别用户访问结果集中的前一行和后一行

select empno,ename,proj_id,proj_start,
lag(proj_end) over (partition by empno order by proj_start) as lastfinishedproj,
proj_end;
lag(proj_id) over(partition by empno order by proj_start) as lastprojno
from emp

Oracle Sql优化之日期的处理的更多相关文章

  1. Oracle SQL优化[转]

    Oracle SQL优化 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...

  2. oracle sql 优化大全

    转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...

  3. Oracle SQL优化原则

    原文:http://bbs.landingbj.com/t-0-240353-1.html 1.选用适合的 ORACLE 优化器 2.访问 Table 的方式 3.共享SQL语句 共享的语句必须满足三 ...

  4. Oracle SQL优化进阶学习

    引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...

  5. 【重磅干货】看了此文,Oracle SQL优化文章不必再看!

    目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...

  6. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  7. oracle sql优化

    整理一下网上所看到sql优化方法 1.使用大写字母书写sql,因为oracle解释器会先将sql语句转换成大写后再解释 2    减少访问数据库的次数,多数情况下一条sql可以达到目的的,就不要使用多 ...

  8. Oracle SQL优化一(常见方法)

    1.表访问方式优化: a)普通表优先“Index Lookup 索引扫描”,避免全表扫描 大多数场景下,通过“Index Lookup 索引扫描”要比“Full Table Scan (FTS) 全表 ...

  9. oracle sql优化笔记

    oracle优化一般分为:1.sql优化(现在oracle都会根据sql语句先进行必要的优化处理,这种应该用户不大了,但是像关联和嵌套查询肯定是和影响性能的) A.oracle的sql语句的条件是从右 ...

随机推荐

  1. stm32按键识别

    刚写了一个关于stm32单片机的按键识别的程序.目的,同时识别多个按键,并且不浪费cpu的时间. 关于去抖动,以前以为是在按键的时候,手会抖动.通过程序验证,这个确实是误解.这个应该是防止意外干扰.以 ...

  2. windows socket函数详解

    windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...

  3. android应用开发小技巧

    1,实现应用可以安装到SD卡里面去:在AndroidManifest.xml文件的manifest里面添加下面一行: 1 android:installLocation="preferExt ...

  4. 能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件

    能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件 http://blog.csdn.net/pplcheer/article/details/7796211 做项目总是遇到各种的问 ...

  5. JavaScript高级程序设计:第十章

    一.理解包含不同层次节点的DOM 1.节点层次 以下面的HTML为例: <html> <head> <title>Sample Page</title> ...

  6. hdu_3062_Party(2-SAT)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3062/ 题意:2-SAT的裸题 题解:直接上模版 #include<cstdio> #in ...

  7. OPENWRT make menuconfig错误之一

    1.make menuconfig rm: cannot remove `tmp/.host.mk': Permission denied 退到trunk上级目录sudo chown -R 777 t ...

  8. find the greatest common divisor

    function gcd(a, b) return a else return gcd(b, a mod b)

  9. 一个字符串搜索的Aho-Corasick算法

    Aho和Corasick对KMP算法(Knuth–Morris–Pratt algorithm)进行了改进,Aho-Corasick算法(Aho-Corasick algorithm)利用构建树,总时 ...

  10. 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2012)

    1.如果格林威治时间时间是date类型.(这种格式最简单)       SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd") ...