Hieronder staan 4 functies waarmee u het microsecondengedeelte van een tijdwaarde in MariaDB kunt retourneren.
De MICROSECOND()
Functie
De MICROSECOND()
functie retourneert het microsecondengedeelte van een gegeven TIME
of DATETIME
uitdrukking. Het accepteert één argument, namelijk de tijd waaruit je de microseconden wilt extraheren.
Voorbeeld:
SELECT MICROSECOND('10:45:30.123456');
Resultaat:
+--------------------------------+ | MICROSECOND('10:45:30.123456') | +--------------------------------+ | 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, MICROSECOND()
geeft een positieve waarde terug.
Hier is een negatieve tijdwaarde met een deel van microseconden:
SELECT MICROSECOND('-838:59:59.999999');
Resultaat:
+----------------------------------+ | MICROSECOND('-838:59:59.999999') | +----------------------------------+ | 999999 | +----------------------------------+
Het deel van de microseconden wordt zoals verwacht geëxtraheerd.
De EXTRACT()
Functie
De EXTRACT()
Met deze functie kunt u een gespecificeerde eenheid extraheren uit de datum/tijd-waarde. Daarom kun je het gebruiken om de microseconden (evenals andere eenheden) uit de tijdwaarde te extraheren.
Voorbeeld:
SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456');
Resultaat:
+---------------------------------------------+ | EXTRACT(MICROSECOND FROM '10:45:30.123456') | +---------------------------------------------+ | 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 daarom gebruiken om de microseconden (evenals uren, minuten en seconden) van de tijd terug te geven.
De %f
formaatspecificatie retourneert de microseconden:
SELECT TIME_FORMAT('10:07:30.003456', '%f');
Resultaat:
+--------------------------------------+ | TIME_FORMAT('10:07:30.003456', '%f') | +--------------------------------------+ | 003456 | +--------------------------------------+
U kunt ook de $s
. gebruiken of $S
formaatspecificatie om het secondengedeelte te retourneren:
SELECT
TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";
Resultaat:
+---------+--------------+-----------+ | Seconds | Microseconds | Both | +---------+--------------+-----------+ | 30 | 123456 | 30.123456 | +---------+--------------+-----------+
De TIME_FORMAT()
functie accepteert een subset van de format strings die gebruikt kunnen worden met de DATE_FORMAT()
functie. 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.007123', '%f');
Resultaat:
+-------------------------------------------------+ | DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') | +-------------------------------------------------+ | 007123 | +-------------------------------------------------+
Slechts een TIME
voorbijgaan waarde werkt niet met deze functie:
SELECT DATE_FORMAT('10:07:30.007123', '%f');
Resultaat:
+--------------------------------------+ | DATE_FORMAT('10:07:30.007123', '%f') | +--------------------------------------+ | NULL | +--------------------------------------+ 1 row in set, 1 warning (0.003 sec)
Laten we eens kijken naar de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Incorrect datetime value: '10:07:30.007123' | +---------+------+---------------------------------------------+