

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# TRUNC 函数
<a name="r_TRUNC"></a>

TRUNC 函数将数字截断为前一个整数或小数。

TRUNC 函数可以选择性地以 `INTEGER` 形式包含另一个参数，以指示在任意方向舍入到的小数位数。当您不提供第二个参数时，函数会舍入到最接近的整数。指定第二个参数 *integer* 时，函数将舍入为最接近的数值，其中精度为 *integer* 个小数位。

 这个函数也可以截断 `TIMESTAMP` 并返回 `DATE`。有关更多信息，请参阅 [TRUNC 函数](r_TRUNC_date.md)。

## 语法
<a name="r_TRUNC-synopsis"></a>

```
TRUNC(number [ , integer ])
```

## 参数
<a name="r_TRUNC-arguments"></a>

 *number*   
数值或计算结果为数值的表达式。它可以是 `DECIMAL`、`FLOAT8` 或 `SUPER` 类型。Amazon Redshift 可根据隐式转换规则转换其他数据类型。

 *（整数*）  
（可选）一个 `INTEGER`，指示精度在任意方向的小数位数。如果未提供 *integer*，数值将作为整数截断；如果指定了 *integer*，数值将截断到指定的小数位。`SUPER` 数据类型不支持此功能。

## 返回类型
<a name="r_TRUNC-return-type"></a>

TRUNC 返回与输入 *number* 相同的数据类型。

当输入为 `SUPER` 类型时，输出将保留与输入相同的动态类型，而静态类型仍保留 `SUPER` 类型。当 `SUPER` 的动态类型不是数值时，Amazon Redshift 将返回 `NULL`。

## 示例
<a name="r_TRUNC-examples"></a>

以下某些示例使用 TICKIT 示例数据库。有关更多信息，请参阅 [示例数据库](c_sampledb.md)。

要截断为给定的销售交易支付的佣金，请使用以下示例。

```
SELECT commission, TRUNC(commission)
FROM sales WHERE salesid=784;

+------------+-------+
| commission | trunc |
+------------+-------+
|     111.15 |   111 |
+------------+-------+
```

要将同一佣金值截断到第一个小数位，请使用以下示例。

```
SELECT commission, TRUNC(commission,1)
FROM sales WHERE salesid=784;

+------------+-------+
| commission | trunc |
+------------+-------+
|     111.15 | 111.1 |
+------------+-------+
```

要为第二个参数使用负值截断佣金，请使用以下示例。请注意，`111.15` 向下四舍五入为 `110`。

```
SELECT commission, TRUNC(commission,-1)
FROM sales WHERE salesid=784;

+------------+-------+
| commission | trunc |
+------------+-------+
|     111.15 |   110 |
+------------+-------+
```