首页 > 代码库 > 【转】oracle内置函数 trunc 使用
【转】oracle内置函数 trunc 使用
原文链接 http://blog.csdn.net/oscar999/article/details/16839417
前言 trunc 是 truncate 的简写。中文翻译是 “截断”或 “截短”。表面看上去,应该是对字串或是数字进行截取。 实际上这个函数有两种用法, 而且这两种用法看上去很不一样。1. 对 number 类型使用。其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。2. 对日期类型使用。对 number 类型使用语法格式:TRUNC(number[,decimals]) --number 待做截取处理的数值 --decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。 需要特别注意的是, 这个参数可以为负数,表示为小数点左边指定位数后面的部分以 0 替换。比如 TRUNC(123.456789,-1) = 120使用实例:1) decimals 不设置,截去所有小数部分select TRUNC(123.456789) from dual; 返回 : 1232) decimals 设置为正整数select TRUNC(123.456789,2) from dual; 返回 123.45比较使用ROUND的状况:select ROUND(123.456789,2) from dual; 返回 123.46 (四舍五入了)3) decimals 设置为负整数select TRUNC(123.456789,-1) from dual; 返回: 120 (最后一位从 3 变成 0 了)4) decimals 设置为小数select TRUNC(123.456789,2.8) from dual; select TRUNC(123.456789,2.4) from dual;返回: 123.45看上去decimals可以设置成小数,只是小数部分完全忽略,设置小数没什么意义。( 但是如果这个参数部分是计算出来的小数,就没有必要做类型转换)对日期类型使用语法格式:TRUNC(date[,fmt]) date 一个日期值fmt 日期格式,该日期将由指定的元素格式所截取。忽略它则由最近的日期截取这个函数的使用解释应该是: 返回日期date所在期间(参数fmt)的第一天日期fmt: 对应的参数表:本周星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六)本月初日期:month或mon或mm或rm本季日期:q本年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度) 本世纪初日期:cc或scc【返回】:日期使用实例:(以当前日期 sysdate 为例)1. 取得当前日期select trunc(sysdate) from dual; select trunc(sysdate ,‘DD‘) from dual; 返回: 20-11月-132. 返回本周星期日select trunc(sysdate,‘d‘) from dual; 因为西方国家是从周日为一周的开始, 对于中国来说, 这个返回的其实是上周的周末。如果要得到中国习惯的本周末的话, 就要加上 7 天了。select trunc(sysdate,‘d‘)+7 from dual; 类似的用法还可以用:select trunc(sysdate,‘dy‘)+7 from dual; select trunc(sysdate,‘day‘)+7 from dual; 3. 返回本季的开始时间select trunc(sysdate,‘q‘) from dual; 4. 返回本月开始时间select trunc(sysdate,‘month‘) from dual; select trunc(sysdate ,‘mm‘) from dual; 5. 本年开始时间select trunc(sysdate,‘year‘) from dual; select trunc(sysdate ,‘yyyy‘) from dual; 6.本小时开始时间select trunc(sysdate ,‘HH24‘) from dual; 返回当天的日期7. 本分钟开始时间select trunc(sysdate ,‘MI‘) from dual; 同样返回当天的日期其他1. 注意, 不能对string 类型来使用这个函数:select TRUNC(‘abcdef‘,2) from dual; 这种用法是错误的。但是, 一下这样却是可以的:select TRUNC(‘123.456789‘,2) from dual; 个中差别, 应该不难理解^^2. 这里频繁使用到dual 这张表:dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
[
【转】oracle内置函数 trunc 使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。