sql >> Database >  >> RDS >> MariaDB

4 manieren om uren, minuten en seconden te scheiden van een tijdwaarde in MariaDB

MariaDB heeft verschillende functies waarmee u verschillende datum- en tijddelen uit datum/tijd-waarden kunt extraheren. U kunt deze gebruiken om elke datum/tijd-component indien nodig in een eigen kolom te scheiden.

Hieronder staan ​​vier manieren om de uren, minuten en seconden uit een tijdwaarde in MariaDB te extraheren. Als bonus voegen we ook microseconden toe.

Het HOUR() , MINUTE() , SECOND() en MICROSECOND() Functies

Het HOUR() , MINUTE() , en SECOND() functies extraheren de uren, minuten en seconden uit respectievelijk een datum- of datetime-waarde.

En als u met een hogere precisie werkt, kunt u de MICROSECOND() . gebruiken functie om het deel van de microseconden terug te geven.

Hier is een voorbeeld van het gebruik van deze functies om elke tijdcomponent in zijn eigen kolom te retourneren:

SELECT 
    HOUR('10:45:30.123456') AS "Hours",
    MINUTE('10:45:30.123456') AS "Minutes",
    SECOND('10:45:30.123456') AS "Seconds",
    MICROSECOND('10:45:30.123456') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

TIME waarden kunnen in het bereik liggen '-838:59:59.999999' naar '838:59:59.999999' .

TIME waarden kunnen ook negatief zijn. In dergelijke gevallen zijn de retourwaarden nog steeds positief.

Hier is een negatieve tijdwaarde:

SELECT 
    HOUR('-10:45:30.123456') AS "Hours",
    MINUTE('-10:45:30.123456') AS "Minutes",
    SECOND('-10:45:30.123456') AS "Seconds",
    MICROSECOND('-10:45:30.123456') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

De EXTRACT() Functie

De EXTRACT() Met deze functie kunt u een gespecificeerde eenheid extraheren uit de datum/tijd-waarde. Daarom kunt u het gebruiken om de uren, minuten, seconden en microseconden uit de tijdwaarde te extraheren.

Voorbeeld:

SELECT 
    EXTRACT(HOUR FROM '10:45:30.123456') AS "Hours",
    EXTRACT(MINUTE FROM '10:45:30.123456') AS "Minutes",
    EXTRACT(SECOND FROM '10:45:30.123456') AS "Seconds",
    EXTRACT(MICROSECOND FROM '10:45:30.123456') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

De TIME_FORMAT() Functie

De TIME_FORMAT() Met deze functie kunt u een tijdwaarde opmaken op basis van een opmaakreeks. De format string geeft aan hoe de tijd moet worden geformatteerd.

U kunt deze functie dus gebruiken om de verschillende tijdsdelen afzonderlijk terug te geven.

Voorbeeld:

SELECT 
    TIME_FORMAT('10:07:30.123456', '%H') AS "Hours",
    TIME_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| 10    | 07      | 30      | 123456       |
+-------+---------+---------+--------------+

Het is ook mogelijk om alle tijdcomponenten afzonderlijk terug te geven, maar in dezelfde kolom.

Hier is een voorbeeld van wat ik bedoel:

SELECT TIME_FORMAT('10:07:30.123456', '%H %i %s %f');

Resultaat:

+-----------------------------------------------+
| TIME_FORMAT('10:07:30.123456', '%H %i %s %f') |
+-----------------------------------------------+
| 10 07 30 123456                               |
+-----------------------------------------------+

De TIME_FORMAT() functie accepteert een subset van de format strings die gebruikt kunnen worden met de DATE_FORMAT() functie.

Er zijn verschillende mogelijke formaatspecificaties voor het uurgedeelte. De hierboven gebruikte formaatspecificatie retourneert het uur met twee cijfers tussen 00 en 23 . Zie MariaDB Format Strings voor een volledige lijst van format strings/specificaties die kunnen worden gebruikt met DATE_FORMAT() . De TIME_FORMAT() functie accepteert alleen formaatspecificaties voor uren, minuten en seconden/subseconden. Elke andere indelingsspecificatie resulteert in null of 0 wordt geretourneerd.

De DATE_FORMAT() Functie

De DATE_FORMAT() Met deze functie kunt u een datum- of datetime-waarde opmaken op basis van een notatiereeks. De format string geeft aan hoe de datum/tijd moet worden opgemaakt.

We kunnen daarom dezelfde formaatspecificaties gebruiken die we gebruikten met de TIME_FORMAT() functie in het vorige voorbeeld. Echter, DATE_FORMAT() accepteert geen TIME waarde, dus we moeten een DATETIME . doorgeven waarde.

SELECT 
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%f') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| 10    | 07      | 30      | 123456       |
+-------+---------+---------+--------------+

Slechts een TIME voorbijgaan waarde werkt niet met deze functie:

SELECT 
    DATE_FORMAT('10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('10:07:30.123456', '%f') AS "Microseconds";

Resultaat:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| NULL  | NULL    | NULL    | NULL         |
+-------+---------+---------+--------------+
1 row in set, 4 warnings (0.003 sec)

Laten we eens kijken naar de waarschuwing:

SHOW WARNINGS;

Resultaat:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
+---------+------+---------------------------------------------+

  1. JavaFX MySQL-verbindingsvoorbeeld alstublieft

  2. Waarom komt de varchar-sorteervolgorde van Oracle niet overeen met het gedrag van varchar-vergelijking?

  3. Hoe configureer ik HikariCP voor postgresql?

  4. Retourneer alleen rij als waarde niet bestaat