Работа с датами. Часть 3
Часть раздела Основы путешествия по SQL на Coddy. Урок 33 из 72.
SQL предоставляет несколько полезных функций для обработки и форматирования дат. Вот некоторые распространённые функции для работы с датами:
DATE()— Преобразует строку в датуSTRFTIME()— Форматирует даты в соответствии с указанными параметрамиDATE('now')— Получает текущую дату:
Например, преобразуйте строку в дату:
SELECT DATE('2023-05-15 13:45:00')
-- Возвращает: 2023-05-15
SELECT DATE('now')
-- Возвращает текущую датуНапример, извлечь год, месяц и день из даты:
-- Получить год
SELECT STRFTIME('%Y', '2023-05-15')
-- Возвращает: 2023
-- Получить месяц
SELECT STRFTIME('%m', '2023-05-15')
-- Возвращает: 05
-- Получить день
SELECT STRFTIME('%d', '2023-05-15')
-- Возвращает: 15
-- Показать комбинацию года и дня (можно использовать любой разделитель)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Возвращает: 2023:15
-- Использовать тире в качестве разделителя
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Возвращает: 15-05-2023
-- Получить день недели
SELECT STRFTIME('%w', '2023-05-15')
-- Возвращает: 1 (понедельник; воскресенье — 0)Распространённые спецификаторы формата:
- %Y: год (4 цифры)
- %m: месяц (01–12)
- %d: день месяца (01–31)
- %w: день недели (0–6, воскресенье — 0)
- %H: час (00–23)
- %M: минута (00–59)
- %S: секунда (00–59)
Между спецификаторами можно использовать любой символ-разделитель (например, -, :, /). Например, STRFTIME('%d-%m-%Y', date) и STRFTIME('%d:%m:%Y', date) объединяют день, месяц и год, используя только разные разделители.
Вы можете объединять эти функции в запросах:
-- Найти все записи за текущий год
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')Задание
ЛегкоДоступные таблицы и столбцы:
events:id,start,end
Напишите запрос, который показывает:
- Идентификатор события
- Дату начала в формате "DD-MM-YYYY". Назовите этот столбец
formatted_start - Дату окончания в формате "DD-MM-YYYY". Назовите этот столбец
formatted_end - Продолжительность в днях между началом и окончанием, округлённую до ближайшего целого числа. Назовите этот столбец
duration_days
Оставьте только те строки, в которых год столбца start равен 2009 (STRFTIME() возвращает строку, а не число).
Отсортируйте результаты по продолжительности в днях в порядке убывания.
Напоминание: чтобы вычислить разницу между датами, используйте: JULIANDAY(end) - JULIANDAY(start), а для округления до целых чисел используйте ROUND().
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцовПотренируйтесь самостоятельно: Песочница SQL