Привет, сегодня я покажу, как в T-SQL из даты можно получить определенную часть этой даты, например, год, месяц, день и даже час, иными словами, в данном материале мы ответим на несколько вопросов, которые связаны с извлечением данных из значения, содержащего дату.
- Как в T-SQL получить текущую дату?
- Пример – получение текущей даты в Microsoft SQL Server
- Как получить год из даты в T-SQL?
- Пример – получаем год из даты в Microsoft SQL Server
- Как получить месяц из даты в T-SQL?
- Пример – получаем месяц из даты в Microsoft SQL Server
- Как из даты получить день в T-SQL?
- Пример – получаем день из даты в Microsoft SQL Server
- Как из даты получить час в T-SQL?
- Пример – получаем час из даты в Microsoft SQL Server
Как в T-SQL получить текущую дату?
Для начала давайте я расскажу о том, как в Microsoft SQL Server можно получить значение текущей даты.
Для получения текущей даты в Microsoft SQL Server существует несколько специальных системных функций. Давайте некоторые из этих функций рассмотрим.
- GETDATE – функция возвращает значение, которое содержит дату и время компьютера, на котором запущен экземпляр Microsoft SQL Server, при этом смещение часового пояса не включается. Лично мне достаточно часто приходится пользоваться именно этой функцией;
- CURRENT_TIMESTAMP – эта функция эквивалентна функции GETDATE, она возвращает точно такое же значение. Вы можете использовать любую функцию, но как я уже сказал, лично я отдаю предпочтение функции GETDATE;
- SYSDATETIME – данная функция также возвращает дату и время компьютера, на котором запущен экземпляр Microsoft SQL Server, смещение часового пояса тоже не включается. Но в данном случае функция возвращает значение с более высокой точностью в долях секунды.
Примечание! Для того чтобы получить значение даты и времени с учетом смещения часового пояса, необходимо использовать функцию SYSDATETIMEOFFSET, а для того чтобы получить значение даты и времени в формате UTC функции GETUTCDATE или SYSUTCDATETIME.
Заметка! Начинающим рекомендую посмотреть мой видеокурс по T-SQL.
Пример – получение текущей даты в Microsoft SQL Server
В данном примере мы вызовем три функции получения текущей даты.
SELECT GETDATE() AS [GETDATE], CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP], SYSDATETIME() AS [SYSDATETIME]
Как видите, результат практически одинаковый, за исключением того, что 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]
Как получить месяц из даты в 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]
Как из даты получить день в 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]
Как из даты получить час в 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 [Час]
У меня все, надеюсь, перечисленные выше примеры помогут Вам в решении Ваших задач. Начинающим программистам рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать на T-SQL в Microsoft SQL Server.
Пока!
Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.