sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB sammansatta datum- och tidsenheter förklaras

MariaDB innehåller ett gäng datum- och tidsenheter som du kan använda när du arbetar med datum- och tidsvärden. Till exempel MONTH är en enhet och HOUR är en annan enhet.

Vissa enheter är sammansatta enheter. Sammansatta enheter är när två enheter kombineras till en. Namnkonventionen är att varje enhetsnamn separeras med ett understreck. Till exempel, MINUTE_SECOND är för minuter och sekunder.

Nedan finns några exempel som visar hur sammansatta enheter fungerar i MariaDB.

Lista över sammansatta enheter

Först, här är en lista över de sammansatta enheterna som är tillgängliga i MariaDB:

Enhet Beskrivning
SECOND_MICROSECOND Seconds.Microseconds
MINUTE_MICROSECOND Minutes.Seconds.Microseconds
MINUTE_SECOND Minuter.sekunder
HOUR_MICROSECOND Timmar.Minuter.Sekunder.Mikrosekunder
HOUR_SECOND Timmar.Minuter.Sekunder
HOUR_MINUTE Timmar.Minuter
DAY_MICROSECOND Dagar Timmar.Minuter.Sekunder.Mikrosekunder
DAY_SECOND Dagar Timmar.Minuter.Sekunder
DAY_MINUTE Dagar Timmar.Minuter
DAY_HOUR Dags timmar
YEAR_MONTH År-månader

Att bara titta på deras namn ger en ganska bra ledtråd om vad de gör.

Sammansatta enheter (som med vilken datum/tidsenhet som helst) kan användas när man extraherar delar av ett datum/tidsvärde, och även när man gör saker som att lägga till och subtrahera ett tidsintervall till ett datum/tidsvärde.

Dessa kan användas med + och - operatorer när man utför aritmetik på datum, med funktioner som ADDDATE() , SUBDATE() , DATE_ADD() , DATE_SUB() , EXTRACT() , TIMESTAMPADD() , och TIMESTAMPDIFF() .

De kan också användas i ON SCHEDULE sats i CREATE_EVENT() och ALTER_EVENT() funktioner.

Exempel – Extrahera sammansatta enheter

Datum- och tidsenheter kan användas med en mängd olika funktioner och i olika andra sammanhang. En av funktionerna som accepterar dessa enheter är EXTRACT() fungera. Den här funktionen returnerar en angiven datum-/tidsenhet från ett givet datum eller datetime-värde.

Här är ett exempel på hur man använder en sammansatt enhet för att extrahera år och månad från ett datum:

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

Resultat:

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

Vi kan se att år och månad returneras som ett värde.

Exempel – Lägga till/subtrahera sammansatta enheter

Sammansatta enheter kan också användas för att lägga till och subtrahera datum och tidsintervall.

Exempel:

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 det här fallet finns det två delar att tänka på när det gäller den sammansatta enheten.

Som i föregående exempel använde vi en sammansatt enhet (i det här fallet DAY_HOUR ). När det gäller det faktiska intervallet att lägga till, använde vi ett kolon för att separera varje sida av den sammansatta enheten.

I det här fallet angav vi '2:08' , vilket lade till 2 dagar och 8 timmar till datumvärdet. Det ursprungliga datumet har ingen tidsdel, så det antas att den initiala tiden är 00:00:00 .

MariaDB är rimligt förlåtande med formatets stränghet. Vi kan få samma effekt genom att använda olika separatorer, och även genom att utelämna den inledande nollan.

Här är ett annat exempel som använder DATE_ADD() funktion med olika tidsintervall:

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                             |
+-------------------------------------------------+

Här är några fler exempel på olika sammansatta enheter:

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. Skapa en "Senast ändrad" kolumn i SQL Server

  2. Fixa "datum är inkompatibelt med int" i SQL Server när du lägger till eller drar ifrån ett datum

  3. Finjustering av Oracle DG40DBC

  4. Starta och fylla i en Postgres-behållare i Docker