Mysql
 sql >> база данни >  >> RDS >> Mysql

EXTRACT() Примери – MySQL

В MySQL можете да използвате EXTRACT() функция за извличане на части от дата. Например можете да извлечете частта за годината, частта за месеца или частта за деня и т.н. Можете също да извлечете части от компонента за време, като минути, секунди, микросекунди и т.н.

Тази статия съдържа примери за демонстрация.

Синтаксис

Синтаксисът е така:

ИЗВЛЕЧВАНЕ (единица ОТ дата)

Където unit е частта за дата, която искате да извлечете, и date е стойността на датата, от която да се извлече тази част.

Вижте таблицата в долната част на тази статия за списък с валидни спецификатори на единици.

Пример 1

Ето пример за демонстриране на основното използване на функцията.

ИЗБЕРЕТЕ ЕКСТРАКТ(ГОДИНА ОТ '2019-01-01') КАТО 'Резултат';

Резултат:

+--------+| Резултат |+--------+| 2019 |+--------+

Пример 2 – Още части за дата

Тук извличам различните части от дата от дата.

ЗАДАДЕТЕ @date ='2019-10-03';ИЗБЕРЕТЕ ЕКСТРАКТ(ДЕН ОТ @дата) КАТО 'Ден', ИЗВЪРХВАНЕ (МЕСЦ ОТ @дата) КАТО 'Месец', ИЗВЪРХВАНЕ (ГОДИНА ОТ @дата) КАТО 'Година ';

Резултат:

+------+-------+------+| Ден | Месец | Година |+------+-------+-----+| 3 | 10 | 2019 |+------+-------+------+

Пример 3 – Извличане на времеви части

Тук извличам различни времеви части от дата.

ЗАДАДЕТЕ @date ='2019-10-03 12:35:05.123456';ИЗБЕРЕТЕ ЕКСТРАКТ(ЧАС ОТ @date) КАТО 'Часове', ИЗВЛЕЧВАНЕ (МИНУТА ОТ @date) КАТО 'Минути', ИЗВЛЕЧВАНЕ (ВТОРА ОТ @ дата) КАТО 'Секунди', ИЗВЛЕЧВАНЕ (МИКРОСЕКУНДА ОТ @date) КАТО 'Микросекунди';

Резултат:

+-------+--------+--------+--------------+| Часове | Минути | Секунди | Микросекунди |+-------+--------+--------+--------------+| 12 | 35 | 5 | 123456 |+-------+--------+--------+--------------+

Пример 4 – Комбиниране на спецификатори на единици

Можете също да комбинирате спецификатори на единици, като това:

ЗАДАДЕТЕ @date ='2019-10-03 12:35:05.123456';ИЗБЕРЕТЕ ЕКСТРАКТ(HOUR_MICROSECOND ОТ @date) КАТО 'Резултат';

Резултат:

+--------------+| Резултат |+--------------+| 123505123456 |+--------------+

Този пример връща всичко от частта за часове до частта за микросекунди.

Пример за база данни

Ето пример за извличане на годината и месеца от колона в база данни:

ИЗПОЛЗВАЙТЕ sakila;ИЗБЕРЕТЕ payment_date КАТО 'Дата/Час', EXTRACT(YEAR_MONTH FROM payment_date) КАТО 'Година/Месец'FROM paymentWHERE payment_id =1;

Резултат:

+---------------------+-----------+| Дата/Час | Година/Месец |+---------------------+-----------+| 25.05.2005 11:30:37 | 200505 |+---------------------+-----------+

Текуща дата/час

Тук извличам частта за месеца от дата, генерирана с CURDATE() функция.

ИЗБЕРЕТЕ CURDATE(), ИЗВЛЕЧВАНЕ(МЕСЕЦ ОТ CURDATE());

Резултат:

+------------+------------------------------+| CURDATE() | ЕКСТРАКТ(МЕСЕЦ ОТ CURDATE()) |+-----------+--------------------------- ----+| 26.06.2018 | 6 |+------------+-------------------------------+ 

В този пример извличам часовата част от текущата дата и час (които се генерират с NOW() функция).

ИЗБЕРЕТЕ СЕГА(), ИЗВЛЕЧЕТЕ(ЧАС ОТ СЕГА());

Резултат:

+---------------------+----------------------- --+| СЕГА() | ИЗВЛЕЧВАНЕ(ЧАС ОТ СЕГА()) |+---------------------+------------------ --------+| 26.06.2018 09:01:46 | 9 |+---------------------+--------------------- -+

Очаквани стойности

Следващата таблица показва валидните стойности на единици и техния очакван формат.

unit Стойност Очакван expr Формат
МИКРОСЕКУНДА МИКРОСЕКУНДИ
ВТОРА СЕКУНДИ
МИНУТА МИНУТИ
ЧАС ЧАСА
ДЕН ДНИ
СЕДМИЦА СЕДМИЦИ
МЕСЕЦ МЕСЕЦИ
Квартал ЧЕТВЕРТИРИ
ГОДИНА ГОДИНИ
SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’
MINUTE_MICROSECOND ‘MINUTES:SECONDS.MICROSECONDS’
MINUTE_SECOND „МИНУТИ:СЕКУНДИ“
HOUR_MICROSECOND „ЧАСОВЕ:МИНУТИ:СЕКУНДИ.МИКРОСЕКУНДИ“
HOUR_SECOND „ЧАСОВЕ:МИНУТИ:СЕКУНДИ“
HOUR_MINUTE „ЧАСОВЕ:МИНУТИ“
DAY_MICROSECOND ‘ДНИ ЧАСОВЕ:МИНУТИ:СЕКУНДИ.МИКРОСЕКУНДИ’
DAY_SECOND „ДНИ ЧАСОВЕ:МИНУТИ:СЕКУНДИ“
DAY_MINUTE „ДНИ ЧАСА:МИНУТИ“
DAY_HOUR „ДНИ ЧАСА“
YEAR_MONTH „ГОДИНИ-МЕСЕЦИ“

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничението CHECK в MySQL не работи

  2. MySQL JDBC драйвер 5.1.33 – Проблем с часовата зона

  3. При игнориране на дублиран ключ?

  4. Как MySQL обработва ORDER BY и LIMIT в заявка?

  5. Кое е по-ефективно:множество MySQL таблици или една голяма таблица?