Перейти к содержимому

Как получить год из даты sql

  • автор:

Функция EXTRACT

Функция EXTRACT извлекает отдельные части из даты или даты-времени.

Синтаксис

SELECT EXTRACT(что_извлечь FROM дата) FROM имя_таблицы WHERE условие

Вместо ‘что_извлечь’ можно написать, к примеру, DAY — тогда из даты будет извлечен день, или, к примеру, YEAR — тогда будет извлечен год. Если же я напишу так: YEAR_MONTH — то будет извлечен год и месяц (слитно, без разделителя). Если вам нужно извлекать несколько частей не слитно, а используя разделитель — используйте DATE_FORMAT .

Форматы вывода

  • SECOND секунды
  • MINUTE минуты
  • HOUR часы
  • DAY дни
  • MONTH месяцы
  • YEAR года
  • MINUTE_SECOND минуты и секунды
  • HOUR_MINUTE часы и минуты
  • DAY_HOUR дни и часы
  • YEAR_MONTH года и месяцы
  • HOUR_SECOND

    часы, минуты, секунды

  • DAY_MINUTE

    дни, часы, минуты

  • DAY_SECOND

    дни, часы, минуты, секунды

Таблицы для примеров

таблица users

id
айди
name
имя
date
дата рождения
1 user1 1988-03-01
2 user2 1989-04-02
3 user3 1990-05-03

Пример

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

SELECT *, EXTRACT(DAY FROM date) as day FROM users

Результат выполнения кода:

id
айди
name
имя
date
дата рождения
day
день
1 user1 1988-03-01 1
2 user2 1989-04-02 2
3 user3 1990-05-03 3

Пример

В данном примере при выборке из таблицы из даты извлекается год:

SELECT *, EXTRACT(YEAR FROM 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

Пример

В данном примере при выборке из таблицы из даты извлекается год и месяц (слитно):

SELECT *, EXTRACT(YEAR_MONTH FROM date) as yearmonth FROM users

Результат выполнения кода:

id
айди
name
имя
date
дата рождения
yearmonth
год и месяц
1 user1 1988-03-01 198803
2 user2 1989-04-02 198904
3 user3 1990-05-03 199005

Смотрите также

  • функцию DATE ,
    которая извлекает дату из даты-времени
  • функцию YEAR ,
    которая извлекает год из даты
  • функцию MONTH ,
    которая извлекает месяц из даты
  • функцию DAY ,
    которая извлекает день из даты

PostgreSQL | Как получить год из даты?

Дата может быть оформлена различными типами. Но для извлечения «ГОДА» нужно использовать функцию extract().

SELECT EXTRACT(YEAR FROM '2020-12-17 10:30:00.12742+03'::timestamp); или SELECT EXTRACT(YEAR FROM '2020-12-17'::timestamp);

Получим 2020.

Получили год из даты в PostgreSQL

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

Информационные ссылки

Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org

Официальный сайт СУБД PostgreSQL — https://www.postgresql.org

Вам также может понравиться

Дописали целое число в конец массива в PostgreSQL и вывели весь новый массив в консоль

Опубликовано 28.06.2022

PostgreSQL | Как дописать новый элемент в конец массива?

В объектно-ориентированных языках типа JavaScript существуют встроенные классы со своими конструкторами. Когда из конструктора класса рождается новый объект, то он наследует все […]

Опубликовано 11.12.2022

PostgreSQL | Как округлить число до целого?

Функции округления: ceil( ) — округление до наибольшего целого floor( ) — округление до наименьшего целого round( ) — округление до ближайшего […]

tuple_percent - 95 - PostgreSQL

Опубликовано 10.09.2023

PostgreSQL | Когда нужно делать VACUUM FULL для таблицы или секции?

Возможны две наиболее вероятные ситуации, когда точно нужно делать VACUUM FULL в PostgreSQL: Мы сильно меняем данные в таблицах и делаем много […]

Получили имена столбцов нужной таблицы в PostgreSQL

Опубликовано 19.12.2022

PostgreSQL | Как получить имена столбцов таблицы?

Исходная таблица со столбцами Прежде чем получать имена столбцов таблицы, давайте создадим её. — Тестовая таблица — DROP TABLE test.t_2022_12_19; CREATE TABLE […]

YEAR (Transact-SQL)

Возвращает целое число, представляющее год указанной даты.

Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

Синтаксис

YEAR ( date ) 

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

date
Выражение, которое можно привести к значению типа time, date, smalldatetime, datetime, datetime2 или datetimeoffset. Аргумент date может быть выражением, выражением столбца, определяемой пользователем переменной или строковым литералом.

Типы возвращаемых данных

int

Возвращаемое значение

Функция YEAR возвращает то же значение, что и функция DATEPART (year, date).

Если дата date содержит только компонент времени, возвращаемое значение равно 1900, базовому году.

Примеры

Следующая инструкция возвращает значение 2010 . Порядковый номер года.

SELECT YEAR('2010-04-30T01:01:01.1234567-07:00'); 

Следующая инструкция возвращает значение 1900, 1, 1 . В качестве значения аргумента date задается число 0 . SQL Server интерпретирует 0 как 1 января 1900 г.

SELECT YEAR(0), MONTH(0), DAY(0); 

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

Следующая инструкция возвращает значение 1900, 1, 1 . В качестве значения аргумента date задается число 0 . SQL Server интерпретирует 0 как 1 января 1900 г.

SELECT TOP 1 YEAR(0), MONTH(0), DAY(0); 

DATEPART (Transact-SQL)

Эта функция возвращает целое число, представляющее указанную часть datepart заданного типа date.

Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

Синтаксис

DATEPART ( datepart , date ) 

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

datepart
Определенная часть аргумента date, для которого функция DATEPART вернет значение типа integer. В приведенной ниже таблице перечислены все допустимые аргументы datepart.

DATEPART не принимает эквивалентные переменные, определяемые пользователем, для аргументов datepart.

datepart Сокращения
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
tzoffset tz
iso_week isowk, isoww

date
Выражение, которое разрешается в один из следующих типов данных:

Для date DATEPART будет принимать столбец выражения, выражение, строковый литерал или определяемую пользователем переменную. Во избежание неоднозначности используйте четырехзначную запись года. Сведения о двузначном обозначении года см. в статье Настройка параметра конфигурации сервера two digit year cutoff.

Тип возвращаемых данных

INT

Возвращаемое значение

Каждое выражение datepart и его краткие формы возвращают одно и то же значение.

Возвращаемое значение зависит от языка среды, задаваемого инструкцией SET LANGUAGE, и от параметра конфигурации сервера «язык по умолчанию» для имени входа. Если значение date является строковым литералом некоторого формата, то возвращаемое значение зависит от функции SET DATEFORMAT. SET DATEFORMAT не изменяет возвращаемое значение, если дата является выражением столбца с типом данных «дата» или «время».

Ниже представлена таблица соответствия аргументов функции datepart и значений, возвращенных выражением SELECT DATEPART(datepart,’2007-10-30 12:15:32.1234567 +05:10′) . Аргумент date имеет тип данных datetimeoffset(7) . Последние две позиции значения, возвращаемого функцией nanoseconddatepart, всегда 00 . Масштаб этого значения составляет 9.

.123456700

datepart Возвращаемое значение
year, yyyy, yy 2007 г.
quarter, qq, q 4
month, mm, m 10
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw 3
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
tzoffset, tz 310
iso_week, isowk, isoww 44

Аргументы функции datepart, содержащие информацию о номере недели и дня

Для week (wk, ww) или weekday (dw) datepart возвращаемое значение DATEPART зависит от значения, заданного функцией SET DATEFIRST.

1 января любого года определяет начальное число для компонента даты weekdatepart. Пример:

DATEPART (wk, ‘Jan 1, xxxx’) = 1,

где xxxx — любой год.

В этой таблице представлены возвращаемые значения параметров week и weekdaydatepart для даты 21.04.2007 с каждым аргументом функции SET DATEFIRST. 1 января 2007 г. приходится на понедельник. 21 апреля 2007 г. приходится на субботу. Для региональных настроек «Английский (США)»

SET DATEFIRST 7 — ( Sunday )

SET DATEFIRST 7 (воскресенье). После задания DATEFIRST используйте предлагаемую инструкцию SQL для табличных значений datepart:

SELECT DATEPART(week, ‘2007-04-21 ‘), DATEPART(weekday, ‘2007-04-21 ‘)

Аргументы функции datepart, отображающие год, месяц и день даты

Значения, возвращаемые в результате выполнения инструкций DATEPART (year, date), DATEPART (month, date) и DATEPART (day, date), совпадают с результатами выполнения функций YEAR, MONTH и DAY, соответственно.

iso_week datepart

Стандарт ISO 8601 включает в себя систему отсчета дней и недель ISO. Каждая неделя приписывается тому году, в котором находится ее четверг. Например, первая неделя 2004 г. (2004W01) считается с понедельника 29 декабря 2003 г. по воскресенье 4 января 2004 г. Европейские страны и регионы обычно используют этот стиль нумерирования. Неевропейские страны или регионы обычно не используют его.

Примечание. Наибольшее число недель в году может составлять 52 или 53.

Система отсчета недель в разных странах и регионах может не совпадать со стандартом ISO. В таблице ниже представлено шесть возможных вариантов.

tzoffset

DATEPART возвращает значение tzoffset (tz) как количество минут (со знаком). В результате выполнения этой инструкции возвращается смещение часового пояса 310 минут:

SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10'); 

Функция DATEPART отображает значение tzoffset описанным ниже образом.

  • Для datetimeoffset и datetime2 значение tzoffset возвращает временное смещение в минутах, причем для datetime2 смещение всегда равно 0 минут.
  • Для типов данных, которые могут быть неявно преобразованы в datetimeoffset или datetime2, функция DATEPART возвращает временное смещение в минутах. Для остальных типов даты и времени этого не происходит.
  • Для параметров любых других типов возвращается ошибка.

Аргумент даты типа smalldatetime

Для значения date типа smalldatetime функция DATEPART возвращает количество секунд 00.

Возвращается значение по умолчанию для аргумента функции datepart, который отличен от даты

Если тип данных аргумента date не содержит указанной части datepart, функция DATEPART вернет значение по умолчанию для этой части datepart, только если для date указан литерал.

Например, значение «год-месяц-день» по умолчанию для любого типа данных date равно 1900-01-01. Приведенная ниже инструкция содержит аргументы компонентов даты для datepart, аргумент времени для date и возвращает 1900, 1, 1, 1, 2 .

SELECT DATEPART(year, '12:10:30.123') ,DATEPART(month, '12:10:30.123') ,DATEPART(day, '12:10:30.123') ,DATEPART(dayofyear, '12:10:30.123') ,DATEPART(weekday, '12:10:30.123'); 

Если аргумент date указан как переменная или столбец таблицы и тип данных этой переменной или столбца не содержит указанной части datepart, функция DATEPART возвращает ошибку 9810. В этом примере переменная @t имеет тип данных time. Этот пример завершается ошибкой, потому что год даты не является допустимым для типа данных time:

DECLARE @t time = '12:10:30.123'; SELECT DATEPART(year, @t); 

Доли секунды

Эти инструкции демонстрируют, что функция DATEPART возвращает доли секунды:

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123 SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456 SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700 

Remarks

Функция DATEPART может использоваться в предложениях выбора из списка, WHERE, HAVING, GROUP BY и ORDER BY.

DATEPART неявно приводит строковые литералы к типу datetime2 в SQL Server 2008 (10.0.x) и более поздних версиях. Это означает, что DATENAME не поддерживает формат ГЧМ (год, число, месяц) при передаче даты в виде строки. Для использования формата ГЧМ (год, число, месяц) необходимо явно привести строку к типу datetime или smalldatetime.

Примеры

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

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0); -- Returns: 1900 1 1 

В приведенном ниже примере возвращается часть даты 12/20/1974 , представляющая день.

-- Uses AdventureWorks SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer; -- Returns: 20 

В приведенном ниже примере возвращается часть даты 12/20/1974 , представляющая год.

-- Uses AdventureWorks SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer; -- Returns: 1974 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *