sql >> Database >  >> RDS >> MariaDB

4 functies die microseconden extraheren uit een tijdwaarde in MariaDB

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

  1. Databases en tabellen maken en verwijderen in MySQL

  2. De voordelen van MariaDB's Certified Associate-programma ontsluiten

  3. SQL Server Prestaties TOP IO Query -1

  4. Rails 4 session.id af en toe nul