tgoop.com/sqlhub/2020
Create:
Last Update:
Last Update:
💡 Полезный хинт для Oracle SQL — использование TRUNC
с датами для фильтрации и агрегации
В Oracle функция `TRUNC(date, 'fmt')` обрезает дату до заданного формата, обнуляя менее значимые части (часы, минуты, секунды и т.д.). Это помогает:
- фильтровать данные по дням, месяцам, годам, неделям, кварталам,
- делать группировки без сложных выражений,
- избавляться от ошибок, когда время мешает сравнению дат.
📌 Форматы:
- 'DD'
— начало дня (по умолчанию)
- 'MM'
— первый день месяца
- 'YYYY'
— первый день года
- 'IW'
— начало ISO-недели
- 'Q'
— первый день квартала
📍 Примеры:
- Все сделки за сегодня
select *
from trades
where trunc(ts) = trunc(sysdate);
- Группировка по месяцам
select trunc(ts, 'MM') as month_start, sum(price) as total
from trades
group by trunc(ts, 'MM')
order by month_start;
-- Данные за текущий квартал
select *
from trades
where trunc(ts, 'Q') = trunc(sysdate, 'Q');
⚡ Плюсы:
- Удобно в чтении и написании
- Убирает проблемы с «лишними» часами и минутами в датах
- Работает напрямую с типом DATE без лишних кастов
@sqlhub
BY Data Science. SQL hub
Share with your friend now:
tgoop.com/sqlhub/2020