Практическое руководство по SQL.

Если бы вы спросили о самом важном навыке для специалиста по данным до того, как я получил свою первую работу, я бы определенно ответил на Python. Без сомнений!

Сейчас я работаю специалистом по обработке данных, и если вы зададите мне тот же вопрос, я отвечу по-прежнему на Python. Однако у меня есть другие мысли. Что заставляет меня задуматься дважды, так это SQL.

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

В этой статье мы рассмотрим 5 функций SQL, которые используются для управления датами. Они пригодятся при работе с данными, которые включают информацию на основе даты или времени.

Примечание. SQL используется многими системами управления реляционными базами данных, такими как MySQL, SQL Server, PostgreSQL и т. д. Хотя они в основном используют один и тот же синтаксис SQL, могут быть небольшие различия. В этой статье мы будем использовать SQL Server.

1. Getdate

Как следует из названия, функция getdate дает нам сегодняшнюю дату. Приведем пример.

DECLARE @mydate Date
SET @mydate = GETDATE()
print @mydate
'2021-08-22'

Мы создаем переменную mydate и присваиваем ей значение сегодняшней даты.

2. Dateadd

Название этой функции даже более понятно, чем предыдущее. Функция dateadd используется для добавления интервала времени или даты к дате.

Как всегда, синтаксис легче понять на примерах.

DECLARE @mydate Date
SET @mydate = GETDATE()
SELECT DATEADD(MONTH, 1, @mydate) AS NextMonth
NextMonth
2021-09-22

Первый параметр указывает интервал, а второй - количество интервалов. Третий параметр - базовое значение.

DATEADD(interval, number of intervals, date)

Мы можем использовать и другие интервалы.

DECLARE @mydate Date
SET @mydate = GETDATE()
SELECT DATEADD(WEEK, -2, @mydate) AS TwoWeeksBefore
TwoWeeksBefore
2021-08-08

Если вы поставите знак минус перед числом интервалов, он вычитает указанный интервал из заданной даты.

Можно добавить временные интервалы, но нам нужно использовать переменную datetime.

DECLARE @mydate DateTime
SET @mydate = GETDATE()
SELECT DATEADD(HOUR, 10, @mydate)
'2021-08-23 00:10:17.287'

3. Datediff

Функция dateiff используется для вычисления разницы между двумя датами на основе заданного интервала.

DECLARE @mydate Date
SET @mydate = '2018-08-08'
SELECT DATEDIFF(MONTH, @mydate, GETDATE())
36

Переменная mydate содержит значение «2018-08-08». В операторе select мы вычисляем разницу между этой переменной и текущей датой.

Как и функция dateadd, функция dateiff принимает и другие интервалы.

DECLARE @mydate Date
SET @mydate = '2021-10-08'
SELECT DATEDIFF(DAY, @mydate, GETDATE()) AS DayDifference
DayDifference
47

4. Дата

Функция datename может использоваться для извлечения частей даты. Например, мы можем получить название месяца и дня из даты следующим образом:

DECLARE @mydate Date
SET @mydate = '2021-10-08'
SELECT DATENAME(MONTH, @mydate)
October
SELECT DATENAME(WEEKDAY, @mydate)
Friday

5. Год, месяц и день

Год, месяц и день - это отдельные функции, но я думаю, что лучше охватить их вместе.

Мы рассмотрели функцию datename, которая дает нам имена месяца и дня. В некоторых случаях нам нужна эта информация в виде чисел. Функции года, месяца и дня позволяют разложить дату.

Приведем пример, демонстрирующий, как их можно использовать.

DECLARE @mydate Date
SET @mydate = '2021-10-08'
SELECT
   Date = @mydate,
   Year = YEAR(@mydate),
   Month = MONTH(@mydate),
   Day = DAY(@mydate)
Date        Year  Month  Day
2021-10-08  2021  10     8

Теперь у нас есть доступ к каждой части заданной даты.

Заключение

Управление датами важно для анализа данных, особенно при работе с данными временных рядов. SQL предоставляет несколько функций, чтобы сделать этот процесс простым и эффективным.

Функции, описанные в этой статье, охватывают значительный объем операций, которые вам нужно будет проделать с датами.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.