在Oracle数据库中,TRUNC()
函数用于截断日期或数值的部分。它可以对日期进行截断到指定的精度级别,并返回截断后的结果。
TRUNC()
函数的语法如下:
- 对于日期参数:
TRUNC(date, [format])
- 对于数值参数:
TRUNC(number, [decimal_places])
下面是对两种情况的详细说明:
TRUNC()
函数用于日期参数:
当应用于日期参数时,TRUNC()
函数可将日期截断到指定的精度级别。常见的精度级别包括年、季度、月、周、日等。
使用示例:
--返回当前日期,截断到天 -- 2023/9/4
SELECT TRUNC(SYSDATE) FROM dual;
--返回当年第一天 -- 2023/1/1
SELECT TRUNC(SYSDATE, 'yyyy') FROM dual;
SELECT TRUNC(SYSDATE, 'YEAR') FROM dual;
--返回当月第一天 -- 2023/9/1
SELECT TRUNC(SYSDATE, 'MONTH') FROM dual;
SELECT TRUNC(SYSDATE, 'mm') FROM dual;
--返回当前年月日 -- 2023/9/4
SELECT TRUNC(SYSDATE, 'dd') FROM dual;
--返回当前星期的第一天(星期日) -- 2023/9/3
SELECT TRUNC(SYSDATE, 'd') FROM dual;
-- 返回星期一所在的一周起始日期 -- 2023/9/4
SELECT TRUNC(SYSDATE, 'IW') FROM dual;
--返回当前日期截取到小时,分秒补0 -- 2023/9/4 20:00:00
SELECT TRUNC(SYSDATE, 'hh') FROM dual;
--返回当前日期截取到分,秒补0 -- 2023/9/4 20:57:00
SELECT TRUNC(SYSDATE, 'mi') FROM dual;
注意,在截断到某个精度级别时,会将较低精度的所有日期部分置为零(例如,小时、分钟和秒)。
TRUNC()
函数用于数值参数:
当应用于数值参数时,TRUNC()
函数可截断小数点后的位数,返回一个整数。
使用示例:
-- 默认将小数部分截断,只返回整数部分 --3
SELECT TRUNC(3.14159) FROM dual;
-- 将数值保留指定的小数位数 -- 3.14
SELECT TRUNC(3.14159, 2) FROM dual;
-- 负数表示从小数点左边开始截取位数 -- 1200
SELECT TRUNC(1234.14159, -2) FROM dual;
在这个例子中,对于第一个查询,TRUNC()
函数将小数值截断到整数部分,返回结果为3。而对于第二个查询,TRUNC()
函数将小数值保留两位小数,返回结果为3.14。而对于第三个查询,TRUNC()函数将保留小数点左侧两位,返回结果为1200。
需要注意以下几点:
- 对于日期参数,
format
参数是可选的。如果省略了format
参数,默认情况下会截断到天。 - 对于数值参数,
decimal_places
参数用于指定要保留的小数位数。它可以为正数(截断)或负数(进位)。 TRUNC()
函数可以与其他函数和表达式结合使用,以便进行更复杂的数据操作和计算。