admin 管理员组

文章数量: 887021


2023年12月16日发(作者:the forest)

trunc函数在oracle的用法

一、概述

trunc函数是Oracle SQL中的一个常用函数,用于截取日期或数值的整数部分。它可以将一个日期截取到指定精度,例如年、月、日等,并返回截取后的日期。同时,它也可以将一个数值截取到指定精度,例如整数、十位、百位等,并返回截取后的数值。

二、语法

trunc函数的语法如下:

TRUNC(date, [fmt]) -- 截取日期

TRUNC(number, [fmt]) -- 截取数值

其中,date表示需要截取的日期;number表示需要截取的数值;fmt表示需要保留的精度。

三、参数说明

1. date参数

date参数可以是DATE类型或TIMESTAMP类型。如果date参数为DATE类型,则其时间部分默认为00:00:00;如果date参数为TIMESTAMP类型,则其时间部分与原始时间相同。

2. number参数

number参数可以是NUMBER类型或VARCHAR2类型。如果number参数为VARCHAR2类型,则必须是能够转换成NUMBER类型的字符串。

3. fmt参数

fmt参数用于指定保留的精度。它可以是以下任意一种:

(1)YYYY:保留到年份级别;

(2)MM:保留到月份级别;

(3)DD:保留到天级别;

(4)HH24:保留到小时级别;

(5)MI:保留到分钟级别;

(6)SS:保留到秒级别;

(7)FF:保留到毫秒级别。

四、示例

1. 截取日期

(1)截取到年份级别

SELECT TRUNC(SYSDATE, 'YYYY') FROM DUAL;

输出结果为:2022/01/01 00:00:00

这里的SYSDATE表示当前系统时间,'YYYY'表示截取到年份级别。

(2)截取到月份级别

SELECT TRUNC(SYSDATE, 'MM') FROM DUAL;

输出结果为:2022/01/01 00:00:00

这里的SYSDATE表示当前系统时间,'MM'表示截取到月份级别。

(3)截取到天级别

SELECT TRUNC(SYSDATE, 'DD') FROM DUAL;

输出结果为:2022/01/11 00:00:00

这里的SYSDATE表示当前系统时间,'DD'表示截取到天级别。

2. 截取数值

(1)截取到整数位

SELECT TRUNC(1234.5678) FROM DUAL;

输出结果为:1234

这里的1234.5678表示需要被截取的数值。

(2)截取到十位

SELECT TRUNC(1234.5678, -1) FROM DUAL;

输出结果为:1230

这里的1234.5678表示需要被截取的数值,-1表示要保留十位。

(3)截取到百位

SELECT TRUNC(1234.5678, -2) FROM DUAL;

输出结果为:1200

这里的1234.5678表示需要被截取的数值,-2表示要保留百位。

五、注意事项

1. 如果fmt参数不指定,则默认截取到天级别。

2. 如果date参数为NULL,则返回NULL。

3. 如果number参数为NULL或无法转换成NUMBER类型,则返回NULL。

4. 如果fmt参数不是有效的格式,则会抛出ORA-01821异常。

5. TRUNC函数可以与其他函数一起使用,例如TO_CHAR、TO_DATE等。


本文标签: 截取 表示 类型