Как из даты получить год, месяц или день в T-SQL? Microsoft SQL Server

Привет, сегодня я покажу, как в T-SQL из даты можно получить определенную часть этой даты, например, год, месяц, день и даже час, иными словами, в данном материале мы ответим на несколько вопросов, которые связаны с извлечением данных из значения, содержащего дату.

Как в T-SQL получить текущую дату?

Для начала давайте я расскажу о том, как в Microsoft SQL Server можно получить значение текущей даты.

Для получения текущей даты в Microsoft SQL Server существует несколько специальных системных функций. Давайте некоторые из этих функций рассмотрим.

  • GETDATE – функция возвращает значение, которое содержит дату и время компьютера, на котором запущен экземпляр Microsoft SQL Server, при этом смещение часового пояса не включается. Лично мне достаточно часто приходится пользоваться именно этой функцией;
  • CURRENT_TIMESTAMP – эта функция эквивалентна функции GETDATE, она возвращает точно такое же значение. Вы можете использовать любую функцию, но как я уже сказал, лично я отдаю предпочтение функции GETDATE;
  • SYSDATETIME – данная функция также возвращает дату и время компьютера, на котором запущен экземпляр Microsoft SQL Server, смещение часового пояса тоже не включается. Но в данном случае функция возвращает значение с более высокой точностью в долях секунды.

Примечание! Для того чтобы получить значение даты и времени с учетом смещения часового пояса, необходимо использовать функцию SYSDATETIMEOFFSET, а для того чтобы получить значение даты и времени в формате UTC функции GETUTCDATE или SYSUTCDATETIME.

Пример – получение текущей даты в Microsoft SQL Server

В данном примере мы вызовем три функции получения текущей даты.

   
   SELECT GETDATE() AS [GETDATE],
           CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP],
           SYSDATETIME() AS [SYSDATETIME]

Скриншот 2

Как видите, результат практически одинаковый, за исключением того, что SYSDATETIME вернула более точное значение времени.

Как получить год из даты в T-SQL?

Если у Вас возникла необходимость из даты получить год, то есть, например, из 01.01.2019 получить 2019 в виде отдельного значения или просто из текущей даты получить год, то в Microsoft SQL Server Вы это можете сделать несколькими способами.

Первый способ заключается в использовании специальной функции YEAR, которая как раз и делает ровно то, что нам нужно, иными словами, она возвращает целое число, представляющее год даты, указанной во входном параметре.

Второй способ предполагает использование другой функции T-SQL – это DATEPART, которая возвращает целое число, представляющее указанную часть даты.

DATEPART принимает два параметра: первый, datepart, т.е. какую часть даты нам нужно вернуть, второй, дата, которую необходимо обработать.

Пример – получаем год из даты в Microsoft SQL Server

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

Чтобы DATEPART нам вернула год из даты, первым параметром нам необходимо передать значение, характеризующее часть «год», допустимо передавать следующие значения: year, yyyy или yy.

   
   --Объявляем переменную для хранения даты
   DECLARE @TestDate DATETIME
   --Присваиваем значение переменной (текущая дата)
   SET @TestDate = GETDATE()

   --Запрос SELECT
   SELECT @TestDate AS [Дата],
           
           --Передаем переменную в качестве параметра
           YEAR(@TestDate) AS [Год YEAR],
           DATEPART(YY, @TestDate) AS [Год DATEPART],
           
           --Передаем выражение, приводящее к типу DATE
           YEAR('01.01.2019') AS [Год YEAR],
           
           --В качестве параметра указываем функцию
           DATEPART(YY, GETDATE()) AS [Год DATEPART]

Скриншот 3

Как получить месяц из даты в T-SQL?

В T-SQL из даты можно получить и номер месяца, для этого можно использовать функцию MONTH, она возвращает целое число, представляющее месяц указанной даты или все ту же функцию DATEPART, в которую, в данном случае необходимо будет передать значение, характеризующее часть даты «месяц», можно использовать: month, mm или m.

Пример – получаем месяц из даты в Microsoft SQL Server

В этом примере мы получаем месяц из даты снова несколькими способами.

   
   --Объявляем переменную для хранения даты
   DECLARE @TestDate DATETIME
   --Присваиваем значение переменной (текущая дата)
   SET @TestDate = GETDATE()

   --Запрос SELECT
   SELECT @TestDate AS [Дата],
           
           --Передаем переменную в качестве параметра
           MONTH(@TestDate) AS [Месяц MONTH],
           DATEPART(MM, @TestDate) AS [Месяц DATEPART],
           
           --Передаем выражение, приводящее к типу DATE
           MONTH('01.01.2019') AS [Месяц MONTH],
          
           --В качестве параметра указываем функцию
           DATEPART(MM, GETDATE()) AS [Месяц DATEPART]

Скриншот 4

Как из даты получить день в T-SQL?

Для того чтобы получить из даты день, в T-SQL можно использовать функцию DAY – это функция возвращает целое число, представляющее день указанной даты. Также можно использовать и уже знакомую функцию DATEPART со значением первого параметра: day, dd или d.

Пример – получаем день из даты в Microsoft SQL Server

Здесь также мы используем несколько способов для получения дня из даты.

   
   --Объявляем переменную для хранения даты
   DECLARE @TestDate DATETIME
   --Присваиваем значение переменной (текущая дата)
   SET @TestDate = GETDATE()

   --Запрос SELECT
   SELECT @TestDate AS [Дата],
           
           --Передаем переменную в качестве параметра
           DAY(@TestDate) AS [День DAY],
           DATEPART(DD, @TestDate) AS [День DATEPART],
           
           --Передаем выражение, приводящее к типу DATE
           DAY('01.01.2019') AS [День DAY],
          
           --В качестве параметра указываем функцию
           DATEPART(DD, GETDATE()) AS [День DATEPART]

Скриншот 5

Как из даты получить час в T-SQL?

Чтобы из даты получить час, мы можем использовать функцию DATEPART со значением hour или hh. Только в данном случае второй параметр (date), в котором мы передаем значение даты, должен обязательно содержать время, т.е. иметь тип данных DATETIME, тип DATE не допускается.

Пример – получаем час из даты в Microsoft SQL Server

В этом примере мы из даты получаем час.

   
   --Объявляем переменную для хранения даты
   DECLARE @TestDate DATETIME
   --Присваиваем значение переменной (текущая дата)
   SET @TestDate = GETDATE()

   --Запрос SELECT
   SELECT @TestDate AS [Дата],
           
           --Передаем переменную в качестве параметра
           DATEPART(HH, @TestDate) AS [Час],
          
           --В качестве параметра указываем функцию
           DATEPART(HH, GETDATE()) AS [Час]

Скриншот 6

У меня все, надеюсь, перечисленные выше примеры помогут Вам в решении Ваших задач. Начинающим программистам рекомендую почитать книгу «Путь программиста T-SQL», в ней я рассказываю про все основные конструкции языка T-SQL, с помощью нее Вы научитесь работать с языком T-SQL с нуля.

Пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.