前言

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;

返回 : 123

2) 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月-13

2. 返回本周星期日

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 使用相关推荐

  1. 【转】oracle内置函数 trunc 使用

    原文链接 http://blog.csdn.net/oscar999/article/details/16839417 前言trunc 是 truncate 的简写. 中文翻译是 "截断&q ...

  2. oracle内部函数,[数据库]Oracle内置函数

    [数据库]Oracle内置函数 0 2020-08-21 19:00:31 lpad()函数:用于左补全字符串. 例:lpad('原始数据','预期长度','填充字符') ,lpad('123','5 ...

  3. ORACLE内置函数

    ORACLE内置函数 一.内置函数的分类 二.转换函数 三.日期函数 四.字符串函数 五.数字函数 六.聚合函数 一.内置函数的分类 内置函数:Oracle自带的函数,我能只需要去调用就可以了. Or ...

  4. oracle 中least,ORACLE 内置函数之GREATEST和LEAST

    Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESC ...

  5. code函数oracle列子,Oracle内置函数SQLCODE和SQLERRM的使用

    Oracle内置函数SQLCODE和SQLERRM的使用 Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息. OTHERS ...

  6. ORACLE 内置函数之 GREATEST 和 LEAST(转)

    Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESC ...

  7. oracle中的greatest,ORACLE 内置函数之 GREATEST 和 LEAST(转)

    Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESC ...

  8. oracle+greatest+max,ORACLE 内置函数之 GREATEST 和 LEAST(求多列的最大值,最小值)

    转载自:http://dlblog.iteye.com/blog/1274005 Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不 ...

  9. oracle内部函数,Oracle内置函数大全.pdf

    WinnerSoft SQL内置函数说明 Oracle 8i数据库管理 数字格式元素 WinnerSoft 元素 示例 说明 , 999,999 标定格式化数字中的位置 G 999G999 返回一组通 ...

最新文章

  1. 程序员注意了!人社部“就业报告”:未来5年,这10个新职业有千万缺口
  2. 数据结构与算法之递归系列
  3. 怎么隐藏滚动条又能滚动
  4. 【转】3.6(译)构建Async同步基元,Part 6 AsyncLock
  5. MVVM及MVVMLight相关资料
  6. 日志服务(SLS)集成 Spark 流计算实战
  7. 关于ORA-01187: cannot read from file because it failed verification tests 的处理方法
  8. 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。
  9. 2017二级计算机考试题,2017计算机二级考试MSOffice真题练习及答案
  10. python基础:集合(set)
  11. Python(pybrain模块)搭建神经网络BPNN
  12. 银联支付接口申请-手机控件支付
  13. 小程序模仿蚂蚁森林浇水demo,树木浇水
  14. 反安装冰盾抗DDOS防火墙后出现启动报错的解决方法
  15. 阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南
  16. 【七夕】是时候展现专属于程序员的“浪漫”了
  17. 利用python实现对豆瓣排名电影的信息获取
  18. 计算机基础知识统考考ppt么,(计算机应用基础统考)第一章计算机基础知识.ppt
  19. VennDiagram包绘制Venn图
  20. Intel汇编-带符号乘法

热门文章

  1. 正则表达式(一) -- 元字符(转)
  2. 《半吊子全栈系列:Boostrap3》
  3. 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)...
  4. python数据类型--数字、字符串
  5. c#实现16进制和字符串之间转换的代码
  6. M产品研发日志(3)--看板,构建,模板,立会
  7. C#语言: 生成静态页面核心代码
  8. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)
  9. 个性化推荐与知识图谱在剧本杀行业的应用与实践
  10. 再品Resnet残差网络