Oracle Sql优化之日期的处理
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优化之日期的处理的更多相关文章
- Oracle SQL优化[转]
Oracle SQL优化 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
- oracle sql 优化大全
转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...
- Oracle SQL优化原则
原文:http://bbs.landingbj.com/t-0-240353-1.html 1.选用适合的 ORACLE 优化器 2.访问 Table 的方式 3.共享SQL语句 共享的语句必须满足三 ...
- Oracle SQL优化进阶学习
引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...
- Oracle SQL 优化原则(实用篇)
由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...
- oracle sql优化
整理一下网上所看到sql优化方法 1.使用大写字母书写sql,因为oracle解释器会先将sql语句转换成大写后再解释 2 减少访问数据库的次数,多数情况下一条sql可以达到目的的,就不要使用多 ...
- Oracle SQL优化一(常见方法)
1.表访问方式优化: a)普通表优先“Index Lookup 索引扫描”,避免全表扫描 大多数场景下,通过“Index Lookup 索引扫描”要比“Full Table Scan (FTS) 全表 ...
- oracle sql优化笔记
oracle优化一般分为:1.sql优化(现在oracle都会根据sql语句先进行必要的优化处理,这种应该用户不大了,但是像关联和嵌套查询肯定是和影响性能的) A.oracle的sql语句的条件是从右 ...
随机推荐
- 高精度运算专题-输出函数与字符串转数字函数(Output function and the string to number function)
输出函数:这个函数别看它小,但浓缩的都是精华啊 作用:对于高精度的数组进行倒序输出 思路:首先从被传入的数组第一位开始,一直往前扫输出就可以了(i--) 注释:因为每个数组的第一位是用来存储这个数组的 ...
- B题 Before an Exam
Description Tomorrow Peter has a Biology exam. He does not like this subject much, but d days ago he ...
- VC常用数据类型使用转换详解
一.其它数据类型转换为字符串 短整型(int)itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); ///按二进制方式转换 长整型 ...
- eclipse使用外部maven时multiModuleProjectDirectory错误解决
错误提醒: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment vari ...
- Html5中的本地存储
Web Storage web storage页面存储是html5为数据存储在客户端提供的一项重要功能,由于web storage API能够区分会话数据与长期数据.因此,相应API也分为两种: se ...
- swf version 与flash player 对应关系
2013-04-16更新:更新Flash Player 11.7/AIR 3.7正式版. 详细链接FlashPlayer 11.7详情 2013-03-10更新:更新Flash Player 11.6 ...
- mybatis 做 insert操作的时候返回插入的那条数据的id
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:吃丸子的小鹿链接:http://www.zhihu.com/question/20810321/answer/16843223 ...
- MySQL半同步复制的数据一致性探讨微信后台团队实践【转】
MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括 ...
- 制作 macOS Sierra 正式版U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
使用命令行创建制作 macOS Sierra 正式版 USB 安装盘 1.准备一个 8GB 或更大容量的 U盘,并备份好里面的所有资料. 2.下载好 macOS Sierra 正式版的安装程序(app ...
- asp.net html table to DataTable
添加引用 http://htmlagilitypack.codeplex.com/downloads/get/437941 protected void Export(string content,s ...