Работа с датами в Oracle SQL — это не просто привычные sysdate и timestamp, а целый мир встроенных инструментов. Один из таких — функция EXTRACT, которая умеет доставать из даты или времени конкретные компоненты: год, месяц, день и даже минуты с секундами. 🚀
Как работает EXTRACT?
Допустим, у нас есть дата '2020-03-13'. Хотим узнать, какой это год:
Результат: 2020
SELECT EXTRACT(YEAR FROM DATE '2020-03-13') FROM dual;
А если нужен месяц? Не проблема:
Результат: 3
SELECT EXTRACT(MONTH FROM DATE '2020-03-13') FROM dual;
Теперь немного магии с текущей датой. Узнаем номер дня в месяце:
Результат: номер дня текущей даты
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;
И даже минуты можно извлечь:
Результат: 2
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2020-03-13 10:02:03') FROM dual;
🔍 Важно!
Из DATE можно извлекать только год, месяц и день. Чтобы работать с часами, минутами и секундами, нужен TIMESTAMP.
Задача: Разложим дату на шесть частей
Представим, что нам нужно получить день, месяц, год, часы, минуты и секунды в числовом формате. Для этого используем TO_CHAR и TO_NUMBER:
SELECT TO_NUMBER(TO_CHAR(SYSDATE, 'DD')) day,
TO_NUMBER(TO_CHAR(SYSDATE, 'MM')) month,
TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) year,
TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')) hour,
TO_NUMBER(TO_CHAR(SYSDATE, 'MI')) min,
TO_NUMBER(TO_CHAR(SYSDATE, 'SS')) sec
FROM dual;
🔹 TO_CHAR(SYSDATE, 'DD') — достаём день в виде строки, затем превращаем в число через TO_NUMBER.
🔹 Аналогично поступаем с месяцем, годом, часами, минутами и секундами.
Что в итоге?
Этот способ наглядно показывает, как можно работать с датами и временем в Oracle SQL. Полезно экспериментировать с разными техниками — так находишь новые возможности. 😉
----------
Хотите разбираться в таких вещах на экспертном уровне? На нашем YouTube-канале мы регулярно разбираем подобные темы, а в Telegram-канале можно задать вопросы и пообщаться с коллегами! Присоединяйтесь! 💡
А еще в нашей онлайн-школе мы проводим обучение по направлениям:🔸PL/SQL; 🔸оптимизация Oracle SQL; 🔸секционирование; 🔸архитектуре СУБД; 🔸Unit-тестированию и др.
Работаем как с физическими так и с юридическими лицами. Напишите в нашу поддержку или Денису напрямую. Всё официально с возможностью получить налоговый вычет, использовать мат капитал или другие плюшки.
Лицензия на дополнительное образование взрослых и детей Л035-01199-54/01691393 выдана 13.01.2025 г. Министерством образование Новосибирской области Российской Федерации
🔗 Полезные ссылки:
- 📹 YouTube-канал: Oracle DBD
- 📢 Telegram-канал: Oracle Developer
- ✉️ Написать автору канала (Денис): @denis_dbd
#oracle #plsql #sql #oracleDB #база_данных #программирование #it #разработка