Выбор только даты из datetime в SQL: без времени

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

При необходимости возвращать в результате запроса только дату из поля с типом datetime, используйте в SQL преобразование посредством CAST:

SQL
Скопировать код
SELECT CAST(datetime_col AS DATE) FROM table; -- Время отсекается, остаётся только дата. Проще простого.

Оператор CAST эффективно "отсекает" время, оставляя только дату. Это универсальное решение подойдет для различных SQL-систем управления базами данных.

Кинга Идем в IT: пошаговый план для смены профессии

Встроенные функции SQL для обработки дат

Каждая база данных обладает своим набором инструментов для работы с датами. Посмотрим на примеры таких функций:

SQL Server: Обрезка времени с помощью CONVERT

В SQL Server функция CONVERT будет полезна для преобразования формата даты и времени:

SQL
Скопировать код
SELECT CONVERT(date, YourDateTimeColumn) FROM YourTable;

MySQL и Oracle: Сработают функции DATE_FORMAT и TO_CHAR

В MySQL функция DATE_FORMAT позволит оставить только дату:

SQL
Скопировать код
SELECT DATE_FORMAT(YourDateTimeColumn, '%Y-%m-%d') FROM YourTable;

В Oracle за выполнение аналогичной задачи отвечает функция TO_CHAR:

SQL
Скопировать код
SELECT TO_CHAR(YourDateTimeColumn, 'YYYY-MM-DD') FROM YourTable;

PostgreSQL: Простота и изящество с помощью CAST

В PostgreSQL также можно использовать простой метод, аналогичный предыдущим примерам:

SQL
Скопировать код
SELECT YourDateTimeColumn::DATE FROM YourTable;

Искусство работы с DateTime в SQL Server

SQL Server предоставляет уникальный набор инструментов для работы с датами:

Точное извлечение даты с DATEDIFF и DATEADD

Комбинация DATEDIFF и DATEADD поможет точно отделить дату от времени:

SQL
Скопировать код
SELECT DATEADD(day, DATEDIFF(day, 0, YourDateTimeColumn), 0) FROM YourTable; -- секунды будут отброшены

Получение текущей даты с GETDATE()

Используйте GETDATE(), чтобы вернуть текущую дату без времени:

SQL
Скопировать код
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) FROM YourTable; -- Время под нашим контролем

Оптимизация сравнения дат в условиях WHERE

Применяйте DATEDIFF в условиях WHERE для оптимизации запросов:

SQL
Скопировать код
WHERE YourDateColumn <= DATEDIFF(day, 0, GETDATE()); -- Ускорение наше всё

Визуализация

Представьте себе, что вы делаете SQL-селфи только со своей датой:

SQL
Скопировать код
SELECT CAST(YourDateTimeColumn AS DATE) FROM YourTable;

А затем "обрезаете" время, чтобы получить идеал даты:

Markdown
Скопировать код
До: [2023-03-15 08:30:00] 📅🕗
После: [2023-03-15]        📅

Клик! 🌄✨ И следов времени уже нет!

Повышение эффективности и точности SQL

Важно не только получать точные результаты, но и обеспечивать высокую производительность SQL-запросов.

Оставляем только дату

Для простого и быстрого получения только даты используйте CAST:

SQL
Скопировать код
SELECT CAST(GETDATE() AS DATE); -- Освобождаемся от оков времени

Оптимизация условий фильтрации в WHERE

Сокращайте расходы ресурсов при фильтрации, применяя DATEDIFF напрямую, минуя DATEADD:

SQL
Скопировать код
WHERE YourDateColumn <= CAST(DATEDIFF(day, 0, GETDATE()) AS date); -- Фильтрация требует экономии и быстродействия

Обрезка времени с преобразованием во float

Время можно отсечь, применяя функцию FLOOR с преобразованием в float:

SQL
Скопировать код
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) -- Пусть время уплывает, мы бережем дату

Этот метод менее очевиден по сравнению с CAST, но также эффективен. Все дороги ведут в Рим.

Полезные материалы

  1. Функции работы с датами в SQL Server и MySQL на w3schools — Руководство для работы с датами в SQL.
  2. SQL DATE_FORMAT на w3resource — Учебные материалы по форматированию дат в MySQL.
  3. Преобразования даты и времени в SQL Server на MSSQLTips — Примеры использования функций для работы с датами и временем в SQL Server.
  4. Функция DATE_TRUNC в PostgreSQL — Официальная документация по обрезке дат в PostgreSQL.