sql >> Database teknologi >  >> RDS >> Mysql

EXTRACT() Eksempler – MySQL

I MySQL kan du bruge EXTRACT() funktion til at udtrække dele fra en dato. For eksempel kan du udtrække årsdelen, månedsdelen eller dagdelen osv. Du kan også udtrække dele fra tidskomponenten, såsom minutter, sekunder, mikrosekunder osv.

Denne artikel indeholder eksempler til demonstration.

Syntaks

Syntaksen ser sådan ud:

EXTRACT(enhed FRA dato)

Hvor unit er den datodel, du vil udtrække, og date er datoværdien at udtrække den del fra.

Se tabellen nederst i denne artikel for en liste over gyldige enhedsspecifikationer.

Eksempel 1

Her er et eksempel for at demonstrere funktionens grundlæggende brug.

VÆLG UDTRAKT(ÅR FRA '2019-01-01') SOM 'Resultat';

Resultat:

+--------+| Resultat |+--------+| 2019 |+--------+

Eksempel 2 – Flere datodele

Her udtrækker jeg de forskellige datodele fra en dato.

INDSTIL @date ='2019-10-03';VÆLG UDDRAG(DAG FRA @dato) SOM 'Dag', UDTRAKT(MÅNED FRA @dato) SOM 'Måned', UDDRAG(ÅR FRA @dato) SOM 'År ';

Resultat:

+------+-------+------+| Dag | Måned | År |+------+-------+------+| 3 | 10 | 2019 |+------+-------+------+

Eksempel 3 – Udpakning af tidsdele

Her udtrækker jeg forskellige tidsdele fra en dato.

SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR FROM @date) AS 'Hours', EXTRACT(MINUTE FROM @date) AS 'Minutes', EXTRACT(SECOND FROM @ date) AS 'Seconds', EXTRACT(MICROSECOND FROM @date) AS 'Microseconds';

Resultat:

+-------+--------+--------+--------------+| Timer | Referat | Sekunder | Mikrosekunder |+-------+---------+--------+-------------+| 12 | 35 | 5 | 123456 |+-------+---------+---------+-------------+

Eksempel 4 – Kombination af enhedsspecifikationer

Du kan også kombinere enhedsspecifikationer som denne:

SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR_MICROSECOND FROM @date) SOM 'Resultat';

Resultat:

+--------------+| Resultat |+--------------+| 123505123456 |+--------------+

Dette eksempel returnerer alt fra timer-delen til mikrosekunder-delen.

Et databaseeksempel

Her er et eksempel på udtrækning af år og måned fra en kolonne i en database:

BRUG sakila;SELECT payment_date AS 'Date/Time', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month'FROM paymentWHERE payment_id =1;

Resultat:

+----------------------+--------+| Dato/tid | År/måned |+----------------------+-----------+| 25-05-2005 11:30:37 | 200505 |+---------------------+--------+

Aktuel dato/klokkeslæt

Her udtrækker jeg månedsdelen fra en dato genereret med CURDATE() funktion.

SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE());

Resultat:

+------------+-------------------------------------+| CURDATE() | UDDRAG(MONTH FROM CURDATE()) |+------+-------------------------------- ----+| 2018-06-26 | 6 |+------------+--------------------------------------+ 

I dette eksempel udtrækker jeg timedelen fra den aktuelle dato og klokkeslæt (som er genereret med NOW() funktion).

VÆLG NU(), UDTRÆK(TIME FRA NU());

Resultat:

+---------------------+------------------------ --+| NU() | UDTAG(TIME FRA NU()) |+--------------------------+------------------------ --------+| 26-06-2018 09:01:46 | 9 |+----------------------+------------------------ -+

Forventede værdier

Følgende tabel viser de gyldige enhedsværdier og deres forventede format.

unit Værdi Forventet expr Formater
MICROSECOND MIKROSEKUNDER
ANDEN SEKUNDER
MINUT MINUTTER
TIME TIMER
DAG DAGE
UGE UGER
MÅNED MÅNEDER
KVART KVARTERE
ÅR ÅR
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTTER:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTTER:SECONDS'
HOUR_MICROSECOND 'TIMER:MINUTTER:SECONDS.MICROSECONDS'
HOUR_SECOND 'TIMER:MINUTTER:SECONDS'
HOUR_MINUTE 'TIMER:MINUTTER'
DAY_MICROSECOND 'DAGE TIMER:MINUTTER:SECONDS.MICROSECONDS'
DAY_SECOND 'DAGE TIMER:MINUTTER:SECONDS'
DAY_MINUTE 'DAGE TIMER:MINUTTER'
DAY_HOUR 'DAGE TIMER'
YEAR_MONTH 'ÅR-MÅNEDER'

  1. SQL Server trunkering og 8192 begrænsning

  2. SqlConnection SqlCommand SqlDataReader IDdisposable

  3. Generer datoer mellem datointervaller

  4. Er der en RIGTIG ydelsesforskel mellem INT og VARCHAR primære nøgler?