oracle自己在学习培训过程中经常用到的数据类型有varchar2,char,number,date类型: 1.varchar2 & char 字符串类型
varchar2和char都是字符串类型,两者的比较:
(1)varchar2后面必须带宽度表示最大长度;
char后面可以不带宽度,默认为1。
(2)varchar2类型数据不定长,按照字符串的实际长度保存,最大长度为4000字节;
char类型的数据是定长的,实际字符串长度不足char宽度时用空格补齐,最大长度为2000字节。
(3)varchar2类型对空格敏感,如在字符串比较时,会按照字符串实际长度进行比较,空格也算在内;
char类型对空格不敏感,如在字符串比较时,会先将短字符串补齐后再进行比较。
2.number 数字类型
(1)number可以副制定宽度,默认是38字节
(2)number(p)表示p为宽度整数(p为正整数)
(3)number(p,s) 精度p:1~38 表示数字位个数 s:-84~127 精度
A:当s>0时,精确到小数点右边的s位,如果s>p,则要在小数点后边补零。
B:当s<0时,精确到小数点左边的s位,此时有效位数为p+|s|
例:number(4,2)总共4位,小数2位,最大值为99.99
number(2,4)数值中所有数字位个数为2,小数点后面4位,存0.00111,实际保存的是0.0011
number(3,-3)当存入12345时,实际保存的是12000,后面三位抹去
3.date 日期时间类型(1)date后面不能跟宽度,是定长7位字节数,默认日期格式为dd-mon-rr,日期时间类型对格式敏感。
(2)sysdate:系统当前日期时间 select sysdate from dual;
(3)显示完整的日期格式命令:alter session set nls_date_format = 'yyyy mm dd hh24:mi:ss';
(4)日期格式:
d:一星期中第几天 dd:一月中第几天 ddd:一年中第几天
fm:去掉两端空格或者前倒0
例:to_char(date,'fmmonth') 去掉两端空格
fmmm 去掉前倒0
yyyy,mm,dd,hh24,mi,ss,d,ddd,day,month,year表示取出date中的相应部分的值。
(5)日期函数:to_date('date','格式')把指定日期(字符串)转化为制定格式的日期类型
months_between('date1','date2')相差多少个月,参数是时间类型(隐式转换)
add_months('date',months)增加几个月
next_day('sysdate','FRIDAY')当前日期之后的第一个星期五的日期round(sysdate)上半天舍去,下半天入,0点0分0秒
round(sysdate,'MONTH')上半月舍去,下半月入,变为1号0点0分0秒
round(sysdate,'YEAR')上半年舍去,下半年入,变为1月1日0点0分0秒 trunc(sysdate)以天为单位进行截取trunc(sysdate,'MONTH')以月为单位进行截取
trunc(sysdate,'YEAR')以年为单位进行截取
注:months_between等函数参数可以隐式转化为日期类型,而round,trunc函数的参数一定要是日期类型。
(6)日期运算:以天为单位sysdate - 1:昨天
sysdate:今天
sysdate + 1:明天sysdate +(-) 时间表达式(天) 如:sysdate + 10/60/24 表示十分中后