
SQL TRUNC 函数用法详解
TRUNC 函数是 SQL 中用于截取日期或数字到指定精度的函数。它允许你截断(而不是四舍五入)数值到指定的小数位数,或者将日期时间值截断到指定的部分(如年、月、日等)。以下是 TRUNC 函数的详细用法:
一、基本语法
数值截断
TRUNC(number, [decimals])- number: 要截断的数值。
- decimals (可选): 指定保留的小数位数。如果省略或为0,则结果整数化;如果为负数,则在小数点左侧进行截断。
日期截断
TRUNC(date, [format])- date: 要截断的日期时间值。
- format (可选): 指定要截断到的日期部分。常见的格式包括 'YEAR'、'MONTH'、'DAY' 等。如果省略,则默认截断到天。
二、数值截断示例
截断到整数
SELECT TRUNC(123.456) FROM dual; -- 结果: 123截断到两位小数
SELECT TRUNC(123.4567, 2) FROM dual; -- 结果: 123.45在小数点左侧截断
SELECT TRUNC(123.456, -1) FROM dual; -- 结果: 120
三、日期截断示例
截断到当前年份的第一天
SELECT TRUNC(TO_DATE('2023-10-05', 'YYYY-MM-DD'), 'YEAR') FROM dual; -- 结果: 2023-01-01截断到当前月份的第一天
SELECT TRUNC(TO_DATE('2023-10-05', 'YYYY-MM-DD'), 'MONTH') FROM dual; -- 结果: 2023-10-01截断到当前周的第一天(默认为周日)
SELECT TRUNC(SYSDATE, 'IW') FROM dual; -- 结果: 当前周的第一天的日期注意:'IW' 表示ISO周日期格式,其中一周的第一天是周一。
截断到当前小时的开始
SELECT TRUNC(TO_TIMESTAMP('2023-10-05 14:30:00', 'YYYY-MM-DD HH24:MI:SS'), 'HH') FROM dual; -- 结果: 2023-10-05 14:00:00
四、注意事项
- 在不同的数据库系统中(如 Oracle、MySQL、PostgreSQL),TRUNC 函数的具体实现和可用的参数可能有所不同。例如,MySQL 没有直接的 TRUNC 函数,但可以使用 FLOOR 或 ROUND 函数结合数学运算来实现类似功能。
- 对于日期截断,format 参数的具体支持情况也依赖于具体的数据库系统。在使用前请查阅相应数据库的文档。
通过掌握 TRUNC 函数的用法,你可以更灵活地处理数值和日期数据,满足各种数据处理需求。
