sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB sammensatte dato- og tidsenheder forklaret

MariaDB inkluderer en masse dato- og tidsenheder, som du kan bruge, når du arbejder med dato- og tidsværdier. For eksempel MONTH er en enhed og HOUR er en anden enhed.

Nogle enheder er sammensatte enheder. Sammensatte enheder er, når to enheder bliver kombineret til én. Navnekonventionen er, at hvert enhedsnavn er adskilt af en understregning. For eksempel MINUTE_SECOND er i minutter og sekunder.

Nedenfor er nogle eksempler, der viser, hvordan sammensatte enheder fungerer i MariaDB.

Liste over sammensatte enheder

For det første er her en liste over de sammensatte enheder, der er tilgængelige i MariaDB:

Enhed Beskrivelse
SECOND_MICROSECOND Seconds.Microseconds
MINUTE_MICROSECOND Minutter.Sekunder.Mikrosekunder
MINUTE_SECOND Minutter.sekunder
HOUR_MICROSECOND Timer.Minutter.Sekunder.Mikrosekunder
HOUR_SECOND Timer.Minutter.Sekunder
HOUR_MINUTE Timer.Minutter
DAY_MICROSECOND Dage Timer.Minuter.Sekunder.Mikrosekunder
DAY_SECOND Dage Timer.Minuter.Sekunder
DAY_MINUTE Dage Timer.Minutter
DAY_HOUR Dage timer
YEAR_MONTH År-måneder

Bare at se på deres navne giver et ret godt fingerpeg om, hvad de laver.

Sammensatte enheder (som med enhver dato/tidsenhed) kan bruges, når du udtrækker dele af en dato/tidsværdi, og også når du gør ting som f.eks. at tilføje og trække et tidsinterval til en dato/tidsværdi.

Disse kan bruges med + og - operatorer, når der udføres aritmetik på datoer, med funktioner såsom ADDDATE() , SUBDATE() , DATE_ADD() , DATE_SUB() , EXTRACT() , TIMESTAMPADD() , og TIMESTAMPDIFF() .

De kan også bruges i ON SCHEDULE klausul af CREATE_EVENT() og ALTER_EVENT() funktioner.

Eksempel – Udpakning af sammensatte enheder

Dato- og tidsenheder kan bruges med en masse forskellige funktioner og i forskellige andre sammenhænge. En af de funktioner, der accepterer disse enheder, er EXTRACT() fungere. Denne funktion returnerer en specificeret dato/tidsenhed fra en given dato eller dato/tidsværdi.

Her er et eksempel på brug af en sammensat enhed til at udtrække år og måned fra en dato:

SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');

Resultat:

+---------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2030-12-25') |
+---------------------------------------+
|                                203012 |
+---------------------------------------+

Vi kan se, at år og måned returneres som én værdi.

Eksempel – Tilføjelse/fradrag af sammensatte enheder

Sammensatte enheder kan også bruges til at tilføje og trække dato- og tidsintervaller fra.

Eksempel:

SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;

Resultat:

+-----------------------------------------+
| '2030-12-25' + INTERVAL '2:08' DAY_HOUR |
+-----------------------------------------+
| 2030-12-27 08:00:00                     |
+-----------------------------------------+

I dette tilfælde er der to dele at være opmærksom på med hensyn til den sammensatte enhed.

Som i det foregående eksempel brugte vi en sammensat enhed (i dette tilfælde DAY_HOUR ). Med hensyn til det faktiske interval, der skal tilføjes, brugte vi et kolon til at adskille hver side af den sammensatte enhed.

I dette tilfælde specificerede vi '2:08' , hvilket tilføjede 2 dage og 8 timer til datoværdien. Den oprindelige dato har ikke en tidsdel, og det antages derfor, at det oprindelige tidspunkt er 00:00:00 .

MariaDB er rimeligt tilgivende med formatets strenghed. Vi kan få den samme effekt ved at bruge forskellige separatorer, og også ved at udelade det indledende nul.

Her er et andet eksempel, der bruger DATE_ADD() funktion med forskellige tidsintervaller:

SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);

Resultat:

+-------------------------------------------------+
| DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) |
+-------------------------------------------------+
| 2030-12-27 08:00:00                             |
+-------------------------------------------------+

Her er nogle flere eksempler på forskellige sammensatte enheder:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";

Resultat:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |
+---------------------+---------------------+---------------------+


  1. Giver mening om Postgres rækkestørrelser

  2. Sådan forbinder du en Oracle-database fra PHP

  3. Hvordan Atan2() virker i PostgreSQL

  4. ORA-01652:ude af stand til at forlænge temp-segmentet med 128 i tablespace SYSTEM:Hvordan forlænges?