Функция YEAR
Функция YEAR извлекает номер года из даты. Дата может быть в формате date или datetime.
Синтаксис
SELECT YEAR(дата) FROM имя_таблицы WHERE условие
Таблицы для примеров
| id айди |
name имя |
date дата рождения |
|---|---|---|
| 1 | user1 | 1988-03-01 |
| 2 | user2 | 1989-04-02 |
| 3 | user3 | 1990-05-03 |
Пример
В данном примере при выборке из таблицы из даты извлекается год:
SELECT *, YEAR(date) as year FROM users
Результат выполнения кода:
| id айди |
name имя |
date дата |
year год |
|---|---|---|---|
| 1 | user1 | 1988-03-01 | 1988 |
| 2 | user2 | 1989-04-02 | 1989 |
| 3 | user3 | 1990-05-03 | 1990 |
Смотрите также
- функцию DAY ,
которая извлекает день из даты - функцию MONTH ,
которая извлекает месяц из даты - функцию DATE ,
которая извлекает дату из даты-времени - функцию HOUR ,
которая извлекает часы из времени - функцию MINUTE ,
которая извлекает минуты из времени - функцию SECOND ,
которая извлекает секунды из времени
Как из даты получить год, месяц или день в 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.
Заметка! Начинающим рекомендую посмотреть мой видеокурс по 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.
Как правильно получить год из даты sql
Здравствуйте, мне нужно получить разницу между двумя датами с помощью функции select DATEDIFF(year, 1997-01-01, getdate()) но функция возвращает не верное значение, плохо отрабатывает функция, которая вычисляет год из даты (т.е. 2й аргумент), если выполнить функцию year(1997-01-01) то она вернет 1905, в моей таблице есть поле DateOfBurn и значение его date (при заполнении я только ввожу «1990-02-02») и есть вычисляемый столбец Age DATEDIFF(year, DateOfBurn, getdate()) Помогите пожалуйста составить запрос правильно.
Отслеживать
8,521 2 2 золотых знака 20 20 серебряных знаков 35 35 бронзовых знаков
задан 8 сен 2016 в 7:25
simply good simply good
566 1 1 золотой знак 6 6 серебряных знаков 20 20 бронзовых знаков
Как получить год из даты sql
Для извлечения года из даты в PostgreSQL используется функция EXTRACT . Тут всё достаточно тривиально, потому сразу приведу пример её использования:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-08-26 12:24:56');
