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')