1、安装oracle后,运行程序,输入用户名等信息登录。
创新互联建站公司2013年成立,先为武城等服务建站,武城等地企业,进行企业商务咨询服务。为武城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
2、下面演示sysdate的用法,这个是oracle独有的,取当前时间。
3、下面介绍to_char()函数的用法,将时间转化为特定的格式。
4、下面介绍一种将时间转化为汉字形式的时间格式及显示出星期。
5、下面演示to_date函数的使用方法,将字符串转换为标准的时间格式。
create
or
replace
function
datediff(type
in
varchar2,
startTime
in
varchar2,endTime
in
varchar2,v
in
varchar2)
return
number
as
v_result
number;
sql_1
varchar2(200);
begin
dbms_output.put_line('1');
if(type
=
'day')
then
sql_1
:=
'select
'||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'')
-
to_date('''||endTime||''',''YYYY-MM-DD'')))
from
dual';
dbms_output.put_line('1');
elsif(type
=
'month')
then
sql_1
:=
'select
'||v||'(months_between(to_date('''||startTime||''',''YYYY-MM-DD'')
-
to_date('''||endTime||''',''YYYY-MM-DD'')))
from
dual'
;
dbms_output.put_line('1');
elsif(type
=
'week')
then
dbms_output.put_line('1');
sql_1
:=
'select
'||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'')
-
to_date('''||endTime||''',''YYYY-MM-DD''))/7)
from
dual
';
end
if;
dbms_output.put_line(sql_1);
EXECUTE
IMMEDIATE
sql_1
into
v_result
;
return
(v_result);
end;
使用时候可以这样:
select
datediff('week','2012-09-01','2012-08-01','round')
from
dual
;
--说明'week'表示周,'month'表示月,'day'表示天
--中间传俩日期
--第四个参数:周或月四舍五入用‘round’
,向上取整用‘ceil’
向下取整用‘floor’
call GetPY(@str varchar(500)) 就可以了
sql2005中是exec GetPY(@str varchar(500)) 。
接收字符返回字符或数值时可以使用dual伪表
1、把小写字符转换成大写
select supper(“smi”) form dual
2、把大写转换成小写
lower(“SMI”)
3、首字母大写
initcap(“smi”)
4、字符串的连接可以使用concat,也可以使用 建议使用
concat(“hello”“world”) 结果为helloworld
5、字符串的截取,使用substr,第一个参数为字符串,第二个参数是索引,第三个参数结束索引(开始索引使用0和1效果一样)
substr(hello,0,3) 结果为hel
6、获取字符串长度
length(“hello”)
7、字符串替换,第二个参数为被替换的字符串,第三个是替换的字符串
replace(“hello”,“l”,“x”) 结果为hexxo
1、四舍五入函数ROUND()
默认取整,可以指定保留位数
round(12.523) 结果为13
round(12.537,2) 结果为12.54
2、取整TRUNC
默认全部去掉小数,可以指定位数
trunc(12.789) 结果为12
3、取余数MOD
mod(10,3) 结果为1
oracle中提供了很多和日期相关的函数,包括日期的加减
日期 - 数字 =日期
日期 - 日期 = 数字(天)
1、如:查询员工进入公司的走数
(sysdate - 入职日期)/7
注:当前日期查询select sysdate form dual
2、查询所有员工进入公司的月数
获取两个时间段的月数使用months_between(sysdate,入职日期)
3、获取几个月后的日期:add_months()
如:获取员工三个月后的日期
add_months(sysdate,3)
4、如求出下星期一是什么时候
指定给出下次某日期数next_date()
next_date(sysdate,“星期一”)
5、求日期的最后一天last_day()
求出本月的最后一天
last_day(sysdate)
1、to_char字符串转换函数
如:将所有员工的入职日期的年、月分开
注:在划分时需要通配符
年:yyyy 月:mm 日:dd
时:HH 分:mi 秒:ss
定义时间格式
to_char(sysdate,“yyyy-mm-dd HH24:mi:ss”)
在10以下的月数前面会默认加上前导零,去除加上fm
to_char(sysdate,“fmyyyy-mm-dd HH24:mi:ss”)
to_char还可以给数字做格式化
如将员工的工资按三位“,”分隔
to_char(工资,“99,999”) 9代表数字
如果想在钱上加上国家符号
美元使用
中文使用l
to_char(工资,“99,999”)
to_char(工资,“l99,999”)
2、to_number数值转换函数,将字符串转换成数值
to_number(“10”) +to_number(“10”)
3、to_date日期转换函数,将字符串数据转换成日期类型
to_date(“1997-05-12”,“YYYY-mm-dd”) 1997/05/12
1、空值处理 nvl
如果在查询的时候存在空值的情况可以使用
nvl(comm,0) 当comm的列值为空时,用0代替
2、decode函数
该函数类似于if ...else if ...else
语法:decode(列名/值,search1,result1,search2,result2,default)
decode(中国,中国,我是中国,美国,我是美国,其他)
如果为中国返回我是中国,为美国返回我是美国,为其他字符则返回其他。
3、case when 与decode差不多
语法 case when city=中国 then 我是中国
when city=美国 then 我是美国
else 其他
使用to_date函数。
你返回的varchar2总有一定的规则吧,比如是yyyy-mm-dd hh24:mi:ss格式的。
那你的返回语句就写成
return to_date(enddate, 'yyyy-mm-dd hh24:mi:ss');