Функция SQL Server DATEPART

В этом руководстве вы узнаете, как использовать функцию SQL Server DATEPART() для извлечения части даты.

Обзор функции SQL Server DATEPART()

Функция DATEPART() возвращает целое число, являющееся частью даты, например дня, месяца или года.

Вот синтаксис функции DATEPART():

DATEPART( date_part , input_date )

Функция DATEPART() принимает два аргумента:

  • date_part — часть даты, которую необходимо извлечь.(См. допустимые части даты в таблице ниже).
  • input_date — дата, из которой извлекается часть даты.
дата_часть аббревиатуры
год гг, гггг
четверть кк, к
месяц М-м-м
деньгода ды, у
день дд, д
неделя неделя, неделя
будний день дв
час чч
минута ми, н
второй сс, с
миллисекунда РС
микросекунда мкс
наносекунда нс
TZoffset тз
ISO_НЕДЕЛЯ isowk, isoww

Примеры SQL Server DATEPART()

Давайте рассмотрим несколько примеров использования функции DATEPART().

1) Использование функции DATEPART() с переменными

В этом примере функция DATEPART() используется для извлечения различных частей значения даты, хранящегося в переменной :

DECLARE @d DATETIME = '2019-01-01 14:30:14';
SELECT 
   DATEPART(year, @d) year, 
   DATEPART(quarter, @d) quarter, 
   DATEPART(month, @d) month, 
   DATEPART(day, @d) day, 
   DATEPART(hour, @d) hour, 
   DATEPART(minute, @d) minute, 
   DATEPART(second, @d) second;

Вот что получилось:

Пример функции SQL Server DATEPART с переменной

2) Пример использования функции DATEPART() со столбцами таблицы

Для демонстрации мы будем использовать sales.orders и sales.order_items из образца базы данных.

Образцы таблиц

В следующем примере функция DATEPART() используется для запроса валовых продаж по году, кварталу, месяцу и дню.

SELECT 
  DATEPART(year, shipped_date) [year], 
  DATEPART(quarter, shipped_date) [quarter], 
  DATEPART(month, shipped_date) [month], 
  DATEPART(day, shipped_date) [day], 
  SUM(quantity * list_price) gross_sales 
FROM 
  sales.orders o 
  INNER JOIN sales.order_items i ON i.order_id = o.order_id 
WHERE 
  shipped_date IS NOT NULL 
GROUP BY 
  DATEPART(year, shipped_date), 
  DATEPART(quarter, shipped_date), 
  DATEPART(month, shipped_date), 
  DATEPART(day, shipped_date) 
ORDER BY 
  [year] DESC, 
  [quarter], 
  [month], 
  [day];

Вот частичный вывод:

Функция SQL Server DATEPART с примером столбца таблицы

В этом примере мы использовали функцию DATEPART() для извлечения года, квартала, месяца и дня из значений в столбце shipped_date. В предложении GROUP BY мы агрегировали валовые продажи(quantity * list_price) по этим частям даты.

Обратите внимание, что функцию DATEPART() можно использовать в предложениях SELECT, WHERE, HAVING, GROUP BY и ORDER BY.

Краткое содержание

  • Используйте функцию SQL Server DATEPART() для извлечения части даты из даты.
Мирослав С.

Автор статей, ИБ-специалист