sql >> Databasteknik >  >> RDS >> MariaDB

Hur man subtraherar timmar från ett Datetime-värde i MariaDB

Här är några alternativ för att subtrahera en eller flera timmar från ett datetime-värde i MariaDB.

SUBTIME() Funktion

SUBTIME() subtraherar en given tidsperiod från ett värde för tid eller datum.

Exempel:

SELECT SUBTIME('2021-05-01 10:00:00', '01:00:00');

Resultat:

+--------------------------------------------+
| SUBTIME('2021-05-01 10:00:00', '01:00:00') |
+--------------------------------------------+
| 2021-05-01 09:00:00                        |
+--------------------------------------------+

Du kan också ändra andra tidsenheter, såsom minuter, sekunder, etc.

DATE_SUB() Funktion

DATE_SUB() Med funktionen kan du subtrahera ett visst antal datum-/tidsenheter från ett datum- eller datumuttryck. Därför kan vi använda den här funktionen för att returnera datetime-värdet, minus ett visst antal timmar.

Exempel:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 HOUR);

Resultat:

+--------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 HOUR) |
+--------------------------------------------------+
| 2021-05-01 09:00:00                              |
+--------------------------------------------------+

Du kan också använda sammansatta datum- och tidsenheter. Du kan till exempel göra timmar och minuter på en gång.

Exempel:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' HOUR_MINUTE);

Resultat:

+---------------------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' HOUR_MINUTE) |
+---------------------------------------------------------------+
| 2021-04-30 18:30:00                                           |
+---------------------------------------------------------------+

Passar Just the Date

Så här händer om vi bara anger ett datumvärde:

SELECT DATE_SUB('2021-05-01', INTERVAL 1 HOUR);

Resultat:

+-----------------------------------------+
| DATE_SUB('2021-05-01', INTERVAL 1 HOUR) |
+-----------------------------------------+
| 2021-04-30 23:00:00                     |
+-----------------------------------------+

Det förutsätter att tiden börjar kl. 00:00:00, och så HOUR beloppet dras från det.

Flera timmar

Om du behöver subtrahera mer än en timme, använd bara det numret istället för 1 . Men HOUR sökord förblir icke-plural oavsett:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 2 HOUR);

Resultat:

+--------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL 2 HOUR) |
+--------------------------------------------------+
| 2021-05-01 08:00:00                              |
+--------------------------------------------------+

Subtraktionsoperatören (- )

Ett annat sätt att subtrahera timmar från ett datetime-uttryck är att använda subtraktionsoperatorn (- ), även känd som minusoperatorn.

Exempel:

SELECT '2021-05-01 10:00:00' - INTERVAL 48 HOUR;

Resultat:

+------------------------------------------+
| '2021-05-01 10:00:00' - INTERVAL 48 HOUR |
+------------------------------------------+
| 2021-04-29 10:00:00                      |
+------------------------------------------+

Tilläggsoperatören (+ )

Du kan alternativt använda additionsoperatorn (+ ) tillsammans med ett negativt belopp.

Exempel:

SELECT '2021-05-01 10:00:00' + INTERVAL -48 HOUR;

Resultat:

+-------------------------------------------+
| '2021-05-01 10:00:00' + INTERVAL -48 HOUR |
+-------------------------------------------+
| 2021-04-29 10:00:00                       |
+-------------------------------------------+

Andra sätt att subtrahera timmar

Här är några andra metoder du kan använda för att subtrahera en eller flera timmar från ett datum och tid:

  • ADDTIME() funktion (om du anger ett negativt belopp kommer det beloppet att subtraheras från datetime-värdet).
  • SUBDATE() funktion (detta är en synonym för DATE_SUB() när den används med samma syntax).
  • DATE_ADD() funktion (om du anger ett negativt belopp kommer det beloppet att subtraheras från datetime-värdet).
  • ADDDATE() funktion (om du anger ett negativt belopp kommer det beloppet att subtraheras från datetime-värdet).

  1. Olika värden räknas i samma kolumn

  2. Använder SELECT INTO OUTFILE i MySQL

  3. Få toppresultat för varje grupp (i Oracle)

  4. Hur man skapar en tabell endast om den inte finns i SQLite