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

TRUNC(截取)函数的用法

TRUNC函数在Oracle中用于截断日期、时间或数字的精度。其语法如下:

截取数字:

TRUNC(number [, precision])

其中:

  • number 表示要截断的数字。

  • precision表示截断的精度。可以是负数、整数或者默认为空。正数表示保留小数位数,负数表示截断小数位数,0表示截断整数部分。

    以下是一些示例:

SELECT TRUNC(12.345) FROM dual; -- 返回12
SELECT TRUNC(9.999, 2) FROM dual; -- 返回9.99
SELECT TRUNC(1234.5678, -2) FROM dual; -- 返回1200
SELECT TRUNC(1234.5678, 1) FROM dual; -- 返回1234.5

截取日期

TRUNC(date [, format])

其中

  • date表示要截断的日期/时间。
  • format 表示截断结果的格式。可以是以下值之一:‘YYYY’, ‘YYY’, ‘YY’, ‘YEAR’,‘MONTH’, ‘MON’, ‘MM’, ‘DY’, ‘DAY’, ‘HH24’, ‘HH12’, ‘HH’, ‘MI’, ‘SS’,‘SSSSS’ 等。

以下是一些示例:

select trunc(sysdate) from dual; -- 2023-08-04 今天的日期为2023-08-04
select trunc(sysdate, 'mm') from dual; -- 2023-08-01 返回当月第一天
select trunc(sysdate, 'MONTH') from dual;  -- 2023-08-01 返回当月第一天
select trunc(sysdate, 'yy') from dual; -- 2023-01-01 返回当年第一天
select trunc(sysdate, 'yyyy') from dual; -- 2023-01-01 返回当年第一天
SELECT TRUNC(SYSDATE, 'YYYY') FROM dual; -- 2023-01-01 返回当年第一天
select trunc(sysdate, 'dd') from dual; -- 2023-08-04 返回当前年月日
select trunc(sysdate, 'd') from dual; -- 2023-07-30 (星期天)返回当前星期的第一天,自己查下日历看下
select trunc(sysdate, 'day') from dual; -- 返回当前星期的第一天
select trunc(sysdate, 'hh') from dual; -- 2023-08-04 10:00:00 返回当前小时的开始时间 当前时间为10:15
SELECT TRUNC(SYSDATE, 'HH24') FROM dual; -- 返回当前小时的开始时间
select trunc(sysdate, 'mi') from dual; -- 2023-08-04 10:15:00 返回当前分钟的开始时间 TRUNC()函数没有秒的精确
SELECT TRUNC(SYSDATE, 'MI') FROM dual; -- 返回当前分钟的开始时间

请注意,TRUNC函数在Oracle和MySQL中的使用可能有所不同。上述示例只适用于Oracle数据库。在使用时,请查阅所使用数据库的文档以了解具体语法和用法。

这里整理了几个mysql对应的写法,由于mysql没有TRUNC函数。

在MySQL中,可以使用DATE_FORMAT函数和STR_TO_DATE函数来实现类似于Oracle中TRUNC函数的功能。下面是一个示例:

SELECT DATE_FORMAT(sysdate(), '%Y-%m-%d') from dual; -- 2023-08-04 返回当前年月日
SELECT DATE_FORMAT(sysdate(), '%Y-%m-01') from dual; -- 2023-08-01 返回当月第一天
SELECT DATE_FORMAT(sysdate(), '%Y-01-01') from dual; -- 2023-01-01 返回当年第一天

请注意,在MySQL中没有直接等效于Oracle中TRUNC函数的函数。因此,您需要使用STR_TO_DATE将字符串转换为日期,然后使用DATE_FORMAT函数指定所需的日期格式来实现截断。

有更好的方法欢迎评论区留言补充

http://www.lryc.cn/news/108440.html

相关文章:

  • IELAB-网络工程师的路由答疑10问(1)
  • OpenLayers入门,OpenLayers加载TopoJson数据,使用行政区划边界作为示例
  • 【图像去噪】基于原始对偶算法优化的TV-L1模型进行图像去噪研究(Matlab代码实现)
  • RISC-V基础之函数调用(五)函数递归调用及函数参数数量溢出(超出现有寄存器个数)约定(包含实例)
  • 力扣:48. 旋转图像(Python3)
  • HarmonyOS应用开发者基础与高级认证题库——中级篇
  • Python中实现多个列表、字典、元组、集合的连接
  • 1005 继续(3n+1)猜想
  • 基于图片、无人机、摄像头拍摄进行智能检测功能
  • Boost开发指南-4.2ignore_unused
  • 【Mybatis】XML映射文件
  • 11.2【MyBatis】主配置文件
  • linuxARM裸机学习笔记(2)----汇编LED灯实验
  • 用C语言实现插入排序算法
  • 2023 电赛E题--可能会出现的问题以及解决方法
  • Demystifying Prompts in Language Models via Perplexity Estimation
  • WEB集群——http、tomcat
  • Socks5代理:网络安全与爬虫之利器
  • 如何兼容低版本浏览器
  • 【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础2
  • gitlab搭建
  • JMeter 的使用
  • Java语言 Iterator 如何装换成 List
  • 国产GOWIN实现低成本实现CSI MIPI转换DVP
  • Typescript第六章 类型进阶(类型之间的关系,全面性检查,对象类型进阶,函数类型进阶,条件类型等)
  • kernel32.dll如何修复,快速解决kernel32.dll缺失的方法
  • 初始化前端项目配置 eslint、prettier、husky 等等
  • 嵌入式存储器为AI的实现提供了实现架构
  • iOS开发-格式化时间显示刚刚几分钟前几小时前等
  • ffmpeg视频音频命令