TRUNC в SQL: синтаксис, варианты использования и тонкости применения

TRUNC - одна из важнейших функций в SQL для обработки и преобразования данных. В этой статье мы подробно рассмотрим синтаксис, варианты использования и тонкости применения TRUNC в различных СУБД.

Общие сведения о функции TRUNC

TRUNC (от англ. truncate - усекать) - это встроенная функция в SQL, которая позволяет усекать или округлять числовые и датовые значения в соответствии с заданными правилами. Рассмотрим подробнее ее основные особенности.

Определение и назначение TRUNC

Функция TRUNC усекает числовое или датовое значение до определенной точности, округляя его в меньшую сторону. Например, при усечении числа до целого отбрасывается дробная часть, а при усечении даты до месяца - день и время.

Основное отличие TRUNC от функции округления ROUND - результат всегда округляется в меньшую сторону, без дополнительных правил. Это позволяет использовать TRUNC для унификации и группировки данных в запросах.

Синтаксис функции TRUNC

Для чисел:

TRUNC(number, decimal_places)

Для дат:

TRUNC(date, format)

Где:

  • number - числовое значение
  • decimal_places - количество знаков после запятой
  • date - дата
  • format - формат усечения даты (День, Час и т.д.)

В каких СУБД поддерживается

Функция TRUNC реализована в большинстве популярных СУБД, включая Oracle, SQL Server, PostgreSQL, MySQL, SQLite и другие.

Синтаксис может немного отличаться, но базовая функциональность одинакова.

Пример использования TRUNC для чисел

Например, чтобы усечь число до 2 знаков после запятой:

TRUNC(3.14159, 2) = 3.14

Пример использования TRUNC для дат

Чтобы усечь дату до уровня месяца:

TRUNC(TO_DATE('2023-02-15 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), 'MM') = '2023-02-01 00:00:00'

Как видно из примеров, TRUNC усекает значения строго в меньшую сторону без дополнительных правил округления.

TRUNC для работы с датами

Одно из основных применений TRUNC - это работа с датами и временем. Рассмотрим подробнее возможности функции.

Поддерживаемые форматы даты

С помощью параметра format в TRUNC можно указать требуемый уровень точности даты:

  • Год - 'YYYY', 'YYY', 'YY', 'Y'
  • Квартал - 'Q'
  • Месяц - 'MONTH', 'MON', 'MM'
  • Неделя - 'WW', 'IW'
  • День - 'DDD', 'DD', 'J'
  • Час - 'HH', 'HH12', 'HH24'
  • Минута - 'MI'

Например:

TRUNC(date, 'YYYY') - год
TRUNC(date, 'MM') - месяц TRUNC(date, 'DD') - день

Пример усечения даты до уровня месяца

Чтобы усечь дату до определенного уровня, например, до месяца, используем:

TRUNC(TO_DATE('2023-02-15 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), 'MM')

Результат:

'2023-02-01 00:00:00'

День и время обнуляются, остается только год и месяц.

Комбинирование TRUNC и других функций даты

TRUNC можно комбинировать с другими функциями работы с датами, например:

ADD_MONTHS(TRUNC(date, 'MM'), 1) - начало следующего месяца

Таким образом можно конструировать нужные диапазоны дат для отчетов и аналитики.

TRUNC для работы с числовыми данными

Помимо дат, TRUNC активно применяется для обработки числовых данных, в частности для округления до определенного количества знаков после запятой.

Усечение чисел до целых или с заданной точностью

Чтобы усечь число до целого, используем:

TRUNC(123.4567, 0) = 123

А чтобы оставить 2 знака после запятой:

TRUNC(123.4567, 2) = 123.45

Отрицательный параметр для усечения слева

Если указать отрицательное число десятичных разрядов, произойдет усечение слева от запятой:

TRUNC(123.4567, -1) = 120

Это позволяет округлить числа до десятков, сотен и т.д.

Пример усечения финансовых показателей

Например, чтобы округлить числа до миллионов рублей:

TRUNC(revenue, -6)

Для округления до тысяч:

TRUNC(expenses, -3)

Это упрощает работу с крупными числами в финансовых вычислениях и отчетах.

Комбинирование TRUNC и других функций

TRUNC можно комбинировать с другими математическими функциями, например:

POWER(TRUNC(value, 2), 3) - возведение в куб усеченного значения

Это позволяет гибко преобразовывать числовые данные в SQL запросах.

Комментарии