Как выделить год из даты в sql
Перейти к содержимому

Как выделить год из даты в 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 ,
    которая извлекает день из даты

Как правильно получить год из даты 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,511 2 2 золотых знака 19 19 серебряных знаков 35 35 бронзовых знаков

задан 8 сен 2016 в 7:25

simply good simply good

566 1 1 золотой знак 6 6 серебряных знаков 20 20 бронзовых знаков

Функция DATEPART стр. 2

В MySQL для извлечения каждой составляющей даты имеется соответствующая функция. Так, например, можно получить минуты времени отправления рейсов, которые вылетают в 1-ом часу дня (база данных «Аэропорт»):

Компоненту времени можно также получить при помощи функции EXTRACT . С помощи этой функции решение задачи можно записать в виде:

Дополнительно с помощью функции EXTRACT можно получить составные компоненты даты/времени, например, год и месяц. Решим такую задачу.

Посчитать количество окрасок по месяцам с учетом года (база данных «Окраска»).

Полный список допустимых компонент можно найти, например, здесь .

Примечание:

Здесь уместно будет отметить довольно вольную трактовку группировки в MySQL, при которой в списке столбцов предложения SELECT могут присутствовать столбцы с детализированными данными, отсутствующими в предложении GROUP BY. Очевидно, что агрегаты здесь подразумеваются, т.к., в противном случае, отсутствует однозначная интерпретация операции. Предполагаю, что здесь неявно используются функция MIN или MAX, но я даже не буду это специально выяснять, т.к. предпочитаю в подобных случаях следовать стандарту.

Функций типа Year, Month и т.д. в PostgreSQL, насколько мне известно, нет. Однако есть функция EXTRACT, и второе решение первой задачи, которое мы написали для MySQL, будет работать и под этой СУБД:

Имеется также функция, аналогичная DATEPART в MSSQL. Различия в синтаксисе, надеюсь, станут очевидны из примера решения той же задачи с использованием этой функции:

Перейдем к решению второй задачи. Составные компоненты не поддерживаются в функции EXTRACT для PostgreSQL. Поэтому можно использовать «классическую» групировку по двум компонентам — году и месяцу:

Тем не менее, мы можем реализовать идею составной компоненты при помощи функции форматирования даты TO_CHAR :

Результат будет аналогичен результату решения 3 за отсутствием первых двух столбцов, которые, разумеется, можно добавить в вывод, включив их одновременно в предложение GROUP BY, как это сделано в решении 4.

Страницы: 1 2

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

Для извлечения года из даты в PostgreSQL используется функция EXTRACT . Тут всё достаточно тривиально, потому сразу приведу пример её использования:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-08-26 12:24:56'); 

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

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