【转】Oracle日期计算2

oracle内部以数字格式存储日期和时间信息:世纪,年,月,日,小时,分钟,秒        临时表dual表
缺省格式:DD-MON-YY('14-3月-08')   round(to_date('14-3月-08'),'month')
可使用sysdate函数(没有参数和括号)获取当前系统日期和时间
日期数据直接加或减一个数值(不一定是整数,代表的是多少天),结果仍为日期(约定的单位为天,当然也可以为月或年)
两个日期数据可以相减(不可相加,没有意义   ),结果为二者相差多少天


add_months(日期x,数值y):计算在日期x基础上增加y个月后的日期 add_months(sysdate,2)

last_day(s) 返回日期x当月最后一天的日期   last_day(sysdate)

months_between(x,y) 返回日期x和y之间相差的月数   months_between(sysdate,sysdate) 有正负号之分(参数前后关系有关)

round(x,y) 四舍五入将日期x截断到y所指定的日期单位(月或年)的第一天 round(sysdate,'month') 3月14号为3月1号   3月16号为4月1号   年的同理round(sysdate,'year')

trunc(x,y) 将日期x截断到y所指定的日期单位(月或年)的第一天,不四舍五入trunc(sysdate,'month')trunc(sysdate,'year')

next_day(x,y) 计算指定日期x后的第一个星期几(由参数y指定)对应的日期 next_day(sysdate,'星期二')


字符类型-》数值类型 to_number()
数值类型-》字符类型 to_char()
to_char(number) to_char(12345,678901) = 12345,678901
to_char(number,'format_model') to_char(12345,678901,'$99,999,0000') = $12,345,6789

数字模式符(参照上面看):9:代表一位数字 0:代表一位数字,强制显示0(相当占位符) $:放置一个美元符$
L:放置一个本地货币符 .:小数点   ,:千位指示符
字符类型-》日期类型 to_date()
日期类型-》字符类型 to_char()
缺省转换为dd-mm-yy格式     to_char(date,'yyyy-mm-dd')或to_char(date,'yyyy-mm-dd hh:mi:ss am')或to_char(date,'yyyy-mm-dd hh24:mi:ss')

 

yyyy 年份     2008         mm/month用数字显示月份      02/2月         dd 在当月中是第几天 28
day   星期几   星期五       am/pm 显示上午/下午 上午      hh/hh12/hh24 小时 2:30 14:30

mi 分钟 30           ss 秒钟 46   ddd在当前年中是第几天    d在当前的星期是第几天,从星期日开始为1(第一天),星期四为5(第五天)

说明:除上述格式符外,日期模式串中还可直接出现如下字符- :;/,如要显示其它文本字符串则使用双引号括起来;也可在模式串的开头使用“fm”标记以去掉数字前 面的零
to_char(sysdate,'"现在是公元"yyyy"年"mm"月"dd"日"' day hh24:mi:ss')
to_char(sysdate,'fm"现在是公元"yyyy"年"mm"月"dd"日"' day hh24:mi:ss')把2009年05月02日输出成了2009年5月2日(秒,分等都带零的都去掉)


to_date(date) 缺省转换为'dd-mm-yy'格式
to_date('2009-02-25','yyyy-mm-dd')
to_date('2009-02-25 15:34:23 下午','yyyy-mm-dd hh24:mi:ss am') 注意:hh24和am不能同时使用

NVL()函数用于将空值null替换为指定的缺省值,适用于字符,数字,日期等类型数据。
语法格式:NVL(exp1,exp2)
说明:如果表达式exp1的值为null,则返回exp2的值,否则返回exp1的值
例如:nvl(comm,0)    nvl(sysdate1,sysdate2)   nvl(job,'No job yet')

NVL2()函数用于实现条件表达式功能。语法格式:NVL2(exp1,exp2,exp3)说明:如果表达式exp1的值不为null,则返回exp2的值,否则返回exp3的值。


select compno,
            case deptno when 10 then '财务部'
                        when 20 then '研发部'
                        else '未知部门'
            end 部门(别名)
from emp;
另外一个:select compno,
                 decode(deptno,10,'财务部',
                               20,'研发部',
                               '未知部门')
                 部门(别名)
          from emp;

trim(ename)首尾去掉空格


insert into dept values(1,'aa');
insert into dept values(2,'bb');
savepoint pl;
insert into dept values(3,'cc');
select * from dept;
rollback to pl;
select * from dept;//前两条有,第三条回滚到了第pl点上,如果只写rollback;将全部回滚

commit;


select mysequence.currval from dual
select mysequence.nextval from dual
insert into test values(mysequence.nextval,'Tom')
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值