当前位置: 首页 > article >正文

Oracle中TRUNC()函数详解

文章目录

  • 前言
  • 一、TRUNC函数的语法
  • 二、主要用途
  • 三、测试用例
  • 总结


前言

在Oracle中,TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本,根据提供的格式进行截取。


一、TRUNC函数的语法

TRUNC(date) 
TRUNC(date, [format]) 
TRUNC(number) 
TRUNC(number, precision)

参数说明:

date: 一个日期或时间表达式。
format: 可选参数,用于指定截取的精度。可以是以下值之一:

参数说明
YYYY年份
YYYY-MM年份和月份
YYYY-MM-DD年份、月份和日期
YYYY-MM-DD HH24年份、月份、日期和小时(24小时制)
YYYY-MM-DD HH24:MI年份、月份、日期、小时和分钟
YYYY-MM-DD HH24:MI:SS年份、月份、日期、小时、分钟和秒钟
YYYY-MM-DD HH24:MI:SS.FF年份、月份、日期、小时、分钟、秒钟和毫秒

number: 一个数值表达式,可以是整数或浮点数。
precision: 可选参数,用于指定数值的截取精度。表示保留到小数点后多少位,默认为0。

二、主要用途

在Oracle中,TRUNC函数用于截断日期或数值的小数部分。它具有以下用途:

  1. 截断日期部分:当TRUNC函数应用于日期时,它会截断日期的时间部分,返回一个新的日期,时间部分设置为零。例如,TRUNC(SYSDATE)将返回当前日期,时间部分设置为零。

  2. 截断时间部分:当TRUNC函数应用于时间时,它将返回一个新的时间,将分钟、秒和毫秒部分设置为零。例如,TRUNC(SYSTIMESTAMP)将返回当前时间,分钟、秒和毫秒部分设置为零。此外,还可以指定截取的位数,例如TRUNC(date, ‘MONTH’)可以截取日期的月份部分。还可以用于将日期或时间戳向下取整到指定的单位,比如TRUNC(date, ‘IW’)可以将日期向下取整到本周的第一天。

  3. 截断数值部分:当TRUNC函数应用于数值时,它将截断数值的小数部分,并返回一个新的数值。例如,TRUNC(3.14159)将返回3。

  4. 截断小数部分:当TRUNC函数应用于数值时,可以指定截断的精度。例如,TRUNC(3.14159, 2)将返回3.14,截断到小数点后两位。

注意,TRUNC函数并不四舍五入,而是直接截取。如果需要进行四舍五入操作,可以使用SQL中的ROUND函数。

三、测试用例

1、测试日期截取

测试SQL:

SELECT 
TRUNC(SYSDATE,'YYYY')  AS YEAR_TRUNC,
TRUNC(SYSDATE,'MM')   AS MONTH_TRUNC,
TRUNC(SYSDATE,'DD')   AS DAY_TRUNC,
TRUNC(SYSDATE,'HH24') AS HOUR_TRUNC,
TRUNC(SYSDATE,'MI')   AS MINUTE_TRUNC,
TRUNC(SYSDATE) -1/24  AS FIRST_TRUNC,
TRUNC(SYSDATE) +2/24  AS SECOND_TRUNC
FROM DUAL;

测试结果:
在这里插入图片描述
其中:最后2个用例,分别表示-1/24表示24点的前1个小时;+2/24表示24点的后2个小时。

2、测试数值截取

测试SQL:

SELECT 
TRUNC(12345.6789)    AS NUMBER1,
TRUNC(12345.6789,0)  AS NUMBER2,
TRUNC(12345.6789,1)  AS NUMBER3,
TRUNC(12345.6789,2)  AS NUMBER4,
TRUNC(12345.6789,3)  AS NUMBER5,
TRUNC(12345.6789,4)  AS NUMBER6,
TRUNC(12345.6789,-1) AS NUMBER7,
TRUNC(12345.6789,-2) AS NUMBER8,
TRUNC(12345.6789,-3) AS NUMBER8,
TRUNC(12345.6789,-4) AS NUMBER10
FROM DUAL;

测试结果:
在这里插入图片描述


总结

总的来说,TRUNC函数可以用于截断日期的时间部分、时间的分钟、秒和毫秒部分、数值的小数部分,并可以指定截断的精度。

如果这篇博客对大家有所帮助,我希望能得到各位的免费点赞收藏,作为对我的鼓励和支持。
同时,也请大家在评论区留下您宝贵的意见和建议,我将非常欢迎。
感谢大家的支持评论收藏!!!


http://www.kler.cn/news/335031.html

相关文章:

  • cherry-markdown开源markdown组件详细使用教程
  • Vue H5(手写)实现下拉刷新
  • 51单片机的家用煤气报警系统【proteus仿真+程序+报告+原理图+演示视频】
  • 启用vnc访问Dell 服务器IDRAC 7虚拟控制台
  • 类的关联、依赖、聚合和组合关系的思考(一)
  • VRRP协议
  • ORB-SLAM复现时遇到的问题(复现失败,切莫当做教程)
  • [RabbitMQ] Spring Boot整合RabbitMQ
  • 一台手机可以登录运营多少个TikTok账号?
  • 【前端】前端数据转化为后端数据
  • 南昌网站建设让你的企业网站更具竞争力
  • 字节跳动收购Oladance耳机:强化音频技术,加速VR/AR生态布局
  • 云原生化 - 工具镜像(简约版)
  • 微服务swagger解析部署使用全流程
  • 鸿蒙开发(NEXT/API 12)【应用间消息通信】手机侧应用开发
  • 【中间件学习】Nginx快速入门(为了配置一个项目)
  • 一个月学会Java 第2天 认识类与对象
  • C++中对象的构造与析构
  • 微知-梅林系统设置无线桥接模式后如何登录梅林路由器?
  • 使用PaddleHub智能生成,献上浓情国庆福