to_char();--转换为字符串
to_number();--转换为数值类型
to_date();--转换为日期类型
1、常用数学运算函数
abs(value) : 返回value的绝对值
ceil(value) :返回大于或等于value的最小整数
cos(value) : 返回value的余弦值
floor(value) : 返回等于或小于value的最大整数
mod(value1,value2) : 返回value1除以value2的余数
power(value,e) : 返回value的e次幂
round(value,precision) : 保留precision位小数对value进行四舍五入
sign(value) : 如果value是正则返回1,是负则返回-1,否则返回0.
sqrt(value) : 返回value的平方根。
trunc(value,precision) : 是一个截取函数,如果precision为正,则往小数点右边截取precision位,为负则往左边截取precision位。
2、常用字符串函数
length(value) : 返回value的长度,value可以是字符串、数字或表达式
lower(value) : 把给定字符串value变为小写
upper(value) : 把给定字符串value变为大写
lpad(string,length[,padding]) : 在string左边填充padding,直到string的长度达到length,如果不指定padding,则默认填充空格
rpad(string,length[,padding]) : 在string右边填充padding,知道string的长度达到length,如果不指定padding,则默认填充空格
ltrim(string[,trimValue]) : 从左边删除trimValue,如果不指定trimValue则删除空格
rtrim(string[,trimValue]) : 从右边删除trimValue,如果不指定trimValue则删除空格
string1 || string2 : 连接两个字符串为一个字符串
initcap(string) : 将字符串的首字母大写
replace(String,src,dest) : 将string中的src用dest代替
substr(string,start[,count]) : 从start位置开始在string中截取count个字符,如果没有指定count,则截取到末尾
3、统计函数
avg([distinct] columnName) : 返回columnName中所有值的平均值,若使用distinct则返回所有不同的非空值的平均值
count([distinct] value) : 统计记录数,若使用distinct则只统计不同的非空数值。value可以是字段名也可以是表达式
max(columnName) : 返回columnName中的最大值
min(columnName) : 返回columnName中的最小值
sum(columnName) : 返回columnName中各值的总和
4、常用日期函数
add_months(date,number) : 返回date之后number个月的日期
last_day(date) : 返回date所在月份的最后一天
months_between(date1,date2) :返回date2减去date1之后的月数
next_day(date,'day') : 返回date后的day所在的日期,其中day表示全称的星期,如Monday
round(date,'format') : 把date四舍五入到指定的format格式
to_char(date,'format') : 将日期date转换为format格式的字符串
to_date(string,'format') : 将字符串string按照format转换成日期形式
to_timestamp(string,'format'):将字符串string按照format转换成时间戳
trunc(date):将日期date的时分秒都设为0
另附几个数字跟日期互相转换的自定义函数:
--create function 数字转日期
create or replace function FN_NUMBER_TO_DATE(timeInMillis in number) return date is
Result date;
begin
Result := to_date('1970-01-01 00:00:00', 'yyyy-MM-dd hh24:mi:ss') +
timeInMillis / (24 * 60 * 60 * 1000);
return(Result);
end FN_NUMBER_TO_DATE;
--create function 取到几天以前的日期
create or replace function FN_DAYS_AGO(dest in date, days in number) return date is
Result date;
timeInMillis number;
begin
timeInMillis := FN_DATE_TO_NUMBER(dest) - days*24*60*60*1000;
Result := FN_NUMBER_TO_DATE(timeInMillis);
return(Result);
end FN_DAYS_AGO;
--create function 日期转数字
create or replace function FN_DATE_TO_NUMBER(inDate in date) return number is
Result number;
begin
Result := (inDate-to_date('1970-01-01', 'yyyy-MM-dd')) * 24*60*60*1000;
return(Result);
end FN_DATE_TO_NUMBER;