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函数指定所需的日期格式来实现截断。

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

你可能感兴趣的:(Oracle,oracle,mysql)