2015年7月23日星期四
一条sql实现两个时间相减后显示天数-小时-分钟-秒
朋友遇到这样的问题,让我帮忙写的一个sql,其实很简单,贴出了供大家参考:
with minus_sec as (select
ceil((to_date('2011/02/24 10:00:00','yyyy/mm/dd hh24:mi:ss')-
to_date('2011/1/29 22:30:00','yyyy/mm/dd hh24:mi:ss'))*24*60*60) sec
from dual) ---把两个日期相减转换成秒数,由于两个日期相减默认是天数,小于一天的用小数表示,所以为了准确转换用ceil函数取比其大的最小整数。
select
trunc(sec/(60*60*24)) days, ---除以1天的秒数取整就得到天数
trunc(mod(sec,60*60*24)/(60*60)) hours, --针对一天的秒数取模 得到的秒数就是不足一天的秒数,然后除以3600取整得到小时
trunc(mod(sec,60*60)/60) mis, ---针对一小时秒数取模,得到的就是不足一小时的秒数,然后除以60取整得到分钟
mod(sec,60) sec --针对一分钟的秒数取模,得到的是不足一分钟的秒数,得到秒
from minus_sec;
Oracle PL/SQL方法实现四舍六入五双
/*
"四舍六入五双" ---统计实现
名词解释:
四舍六入五双 规则如下:
1. 被修约的数字小于5时,该数字舍去;
2. 被修约的数字大于5时,则进位;
3. 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,
若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后
面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。
举例:
9.8249=9.82, 9.82671=9.83
9.8350=9.84, 9.8351 =9.84
9.8250=9.82, 9.82501=9.83
四舍六入五双 在统计学方面是比四舍五如更为科学的统计方法,特别是做大量数据统计时。
"四舍六入五双" ---统计实现
名词解释:
四舍六入五双 规则如下:
1. 被修约的数字小于5时,该数字舍去;
2. 被修约的数字大于5时,则进位;
3. 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,
若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后
面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。
举例:
9.8249=9.82, 9.82671=9.83
9.8350=9.84, 9.8351 =9.84
9.8250=9.82, 9.82501=9.83
四舍六入五双 在统计学方面是比四舍五如更为科学的统计方法,特别是做大量数据统计时。
2015年7月20日星期一
oracle 字符串字段分成多个字段后创建视图
/**
情景:某表有一字段为字符串类型,字段中有1~2个英文分号或者中文的分号
现要根据该字段的分号把该字段划分为2~3个字段,并组成与表中其他字段组成视图。
解决方法:
1)创建table类型,table记录类型跟视图记录类型一样,然后创建返回该table类型的方法。
方法用于处理str字段,将其分成多个字段,然后生成table记录类型的数据,并填充table,
最后将数据返回。
创建视图时直接根据方法返回的table来创建视图。
2)直接用select创建视图,配合case when。
个人推荐使用方法2.
**/
-----------------------------------创建例子用表------------------
create table test_3(
V_NAME VARCHAR2( 10),
STR VARCHAR2(100 )
);
2015年4月5日星期日
CentOS 7 静默安装Oracle 11g
安装环境:
DEFROUTE=yes #默认路由
ONBOOT=yes #开启启动,默认开机网卡不会启动。
IPADDR=192.168.1.22 #IP地址
GATEWAY=192.168.1.1 #网关
NETMASK=255.255.255.0 #子网掩码
DNS1=202.96.128.68 #DNS1
DNS2=192.168.1.1 #DNS2
操作系统: CentOS 7
oracle版本: Oracle 11g R2
一、安装前准备
关闭selinux和防火墙:
禁止selinux:
#vi /etc/selinux/config
把SELINUX=enforcing 改成 SELINUX=disable 保存退出
CentOS关闭防火墙并禁止随机启动:
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
设置网络静态IP:
#vi /etc/sysconfig/network-script/ifcfg-enoXXXXXXXX #该处XXXX为数字,CentOS7后网卡不再使用ethX 文件为设置文件。
改成类似以下内容:
TYPE=Ethernet
BOOTPROTO=static #设为静态IPDEFROUTE=yes #默认路由
ONBOOT=yes #开启启动,默认开机网卡不会启动。
IPADDR=192.168.1.22 #IP地址
GATEWAY=192.168.1.1 #网关
NETMASK=255.255.255.0 #子网掩码
DNS1=202.96.128.68 #DNS1
DNS2=192.168.1.1 #DNS2
更改hostname :
#vi /etc/hostname
改变内容为,自己设定的hostname,如myserver等。
更改/etc/hosts文件,更改hosts文件方便:
把127.0.0.1 localhost.domain localhost改成:
127.0.0.1 myserver localhost.domain localhost
192.168.1.22 myserver
用户组以及用户创建:
创建dba用户组合oinstall用户组:
#group add dba
#group add oinstall
创建oracle用户:
#useradd -g oinstall -G dba oracle
设置密码:
#passwd oracle
订阅:
博文 (Atom)