TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
SQL: Реляционные базы данных

28 Aug 2025, 18:01

Telegram'da ochish Ulashish Shikoyat qilish

⌛ Основы по работе с датами в SQL. Часть 1/3

Работа с датами и временем — это неотъемлемая часть большинства SQL-запросов. Независимо от того, анализируете ли вы продажи по месяцам, фильтруете данные за определённый период или рассчитываете сроки выполнения задач — понимание работы с датами просто необходимо. Перед тем как начинать работать с датами, важно понять, как именно они хранятся в различных СУБД (определите вашу и погуглите какой синтаксис она приветствует), это поможет избежать множества ошибок и неожиданностей.

⌛ Основные типы данных для хранения дат:

➖ DATE — хранит только дату без времени
➖Формат: YYYY-MM-DD (например: 2024-03-15)
➖Диапазон: от 1000-01-01 до 9999-12-31
➖Использование: когда важна только дата (день рождения, дата регистрации)

➖TIME — хранит только время суток
➖Формат: HH:MM:SS (например: 14:30:25)
➖Может включать: микросекунды HH:MM:SS.ffffff
➖Использование: время начала/окончания рабочего дня, длительность процессов

➖ DATETIME — хранит дату и время вместе
➖Формат: YYYY-MM-DD HH:MM:SS (например: 2024-03-15 14:30:25)
➖Диапазон: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59
➖Использование: временные метки событий, логи

➖ TIMESTAMP — похож на DATETIME, но с важными отличиями:
➖Диапазон: от 1970-01-01 00:00:01 UTC до 2038-01-19 03:14:07 UTC
➖Автоматическое обновление: может обновляться при изменении строки
➖Часовой пояс: часто зависит от настроек сервера
➖Использование: когда важна временная зона и автоматическое обновление

Дальше распишу функционал внутри кода, для наглядности.

⌛ Функции получения текущего времени.
Эти функции используются постоянно — для фильтрации свежих данных, создания временных меток, сравнения с прошлыми значениями.
-- Получаем только текущую дату (без времени)
-- Результат будет примерно таким: 2024-03-15
SELECT CURRENT_DATE;
-- Альтернатива:
SELECT CURDATE(); -- То же самое в MySQL

-- Получаем текущую дату и время
-- Результат будет примерно таким: 2024-03-15 16:45:30
SELECT NOW();
-- Альтернативы:
SELECT CURRENT_TIMESTAMP; -- То же самое, что и NOW()
SELECT LOCALTIME(); -- В некоторых СУБД
SELECT LOCALTIMESTAMP(); -- В некоторых СУБД

-- Получаем только текущее время (без даты)
-- Результат будет примерно таким: 16:45:30
SELECT CURRENT_TIME;
-- Альтернатива:
SELECT CURTIME(); -- То же самое в MySQL

⌛ Извлечение отдельных компонентов даты и времени.
Часто нужно получить отдельные части даты — год, месяц, день и т.д. Для этого используются функции извлечения.
-- Представим, что у нас есть таблица orders с полем created_at
-- Значение created_at: '2024-03-15 14:30:25'

SELECT
created_at, -- Исходное значение: 2024-03-15 14:30:25

-- Извлекаем год из даты
-- Результат: 2024
EXTRACT(YEAR FROM created_at) AS order_year,

-- Извлекаем месяц из даты
-- Результат: 3 (март)
EXTRACT(MONTH FROM created_at) AS order_month,

-- Извлекаем день месяца
-- Результат: 15
EXTRACT(DAY FROM created_at) AS order_day,

-- Извлекаем день недели (1 = воскресенье, 2 = понедельник, ...)
-- Результат: 6 (пятница)
EXTRACT(DOW FROM created_at) AS day_of_week,

-- Извлекаем день года (1-365/366)
-- Результат: 75 (15 марта — 75-й день года)
EXTRACT(DOY FROM created_at) AS day_of_year,

-- Извлекаем час
-- Результат: 14
EXTRACT(HOUR FROM created_at) AS order_hour,

-- Извлекаем минуты
-- Результат: 30
EXTRACT(MINUTE FROM created_at) AS order_minute,

-- Извлекаем секунды
-- Результат: 25
EXTRACT(SECOND FROM created_at) AS order_second,

-- Извлекаем квартал года (1-4)
-- Результат: 1 (первый квартал)
EXTRACT(QUARTER FROM created_at) AS quarter,

-- Извлекаем номер недели года (1-53)
-- Результат: 11
EXTRACT(WEEK FROM created_at) AS week_number

FROM orders
WHERE id = 123; -- Для примера берём конкретную запись

Завтра выложу вторую часть поста, где покажу работу с интервалами, вычисление дельт между датами и варианты форматирования дат.

#SQL

📱 Подписаться на канал
💻 Курс автора по SQL DDL
🌎 Мой ИТ-стартап

617 0 11 9 35
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot