sql >> Databasteknik >  >> RDS >> MariaDB

4 funktioner som extraherar mikrosekunder från ett tidsvärde i MariaDB

Nedan finns 4 funktioner som gör att du kan returnera mikrosekundersdelen från ett tidsvärde i MariaDB.

MICROSECOND() Funktion

MICROSECOND() funktion returnerar mikrosekundersdelen av en given TIME eller DATETIME uttryck. Den accepterar ett argument, vilket är tiden du vill extrahera mikrosekunderna från.

Exempel:

SELECT MICROSECOND('10:45:30.123456');

Resultat:

+--------------------------------+
| MICROSECOND('10:45:30.123456') |
+--------------------------------+
|                         123456 |
+--------------------------------+

TIME värden kan ligga inom intervallet '-838:59:59.999999' till '838:59:59.999999' .

TIME värden kan också vara negativa. I sådana fall MICROSECOND() returnerar ett positivt värde.

Här är ett negativt tidsvärde med en mikrosekundsdel:

SELECT MICROSECOND('-838:59:59.999999');

Resultat:

+----------------------------------+
| MICROSECOND('-838:59:59.999999') |
+----------------------------------+
|                           999999 |
+----------------------------------+

Mikrosekundersdelen extraheras som förväntat.

EXTRACT() Funktion

EXTRACT() funktionen låter dig extrahera en specificerad enhet från datum/tidsvärdet. Därför kan du använda den för att extrahera mikrosekunderna (liksom andra enheter) från tidsvärdet.

Exempel:

SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456');

Resultat:

+---------------------------------------------+
| EXTRACT(MICROSECOND FROM '10:45:30.123456') |
+---------------------------------------------+
|                                      123456 |
+---------------------------------------------+

TIME_FORMAT() Funktion

TIME_FORMAT() funktionen låter dig formatera ett tidsvärde baserat på en formatsträng. Formatsträngen anger hur tiden ska formateras.

Du kan därför använda den här funktionen för att returnera mikrosekunderna (samt timmar, minuter och sekunder) från tiden.

%f formatspecificeraren returnerar mikrosekunderna:

SELECT TIME_FORMAT('10:07:30.003456', '%f');

Resultat:

+--------------------------------------+
| TIME_FORMAT('10:07:30.003456', '%f') |
+--------------------------------------+
| 003456                               |
+--------------------------------------+

Du kan också använda $s eller $S formatspecifikation för att returnera sekunddelen:

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";

Resultat:

+---------+--------------+-----------+
| Seconds | Microseconds | Both      |
+---------+--------------+-----------+
| 30      | 123456       | 30.123456 |
+---------+--------------+-----------+

TIME_FORMAT() funktion accepterar en delmängd av formatsträngarna som kan användas med DATE_FORMAT() fungera. Se MariaDB Format Strings för en fullständig lista över formatsträngar/specifikationer som kan användas med DATE_FORMAT() . TIME_FORMAT() Funktionen accepterar endast formatspecifikationer för timmar, minuter och sekunder/undersekunder. Alla andra formatspecifikationer resulterar i null eller 0 returneras.

DATE_FORMAT() Funktion

DATE_FORMAT() funktionen låter dig formatera ett datum- eller datumtidsvärde baserat på en formatsträng. Formatsträngen anger hur datum/tid ska formateras.

Vi kan därför använda samma formatspecifikationer som vi använde med TIME_FORMAT() funktion i föregående exempel. Men DATE_FORMAT() accepterar inte en TIME värde, så vi måste skicka en DATETIME värde.

SELECT DATE_FORMAT('2023-01-01 10:07:30.007123', '%f');

Resultat:

+-------------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') |
+-------------------------------------------------+
| 007123                                          |
+-------------------------------------------------+

Passar bara en TIME värde fungerar inte med den här funktionen:

SELECT DATE_FORMAT('10:07:30.007123', '%f');

Resultat:

+--------------------------------------+
| DATE_FORMAT('10:07:30.007123', '%f') |
+--------------------------------------+
| NULL                                 |
+--------------------------------------+
1 row in set, 1 warning (0.003 sec)

Låt oss se varningen:

SHOW WARNINGS;

Resultat:

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

  1. Konfigurera ScaleGrid-behörigheter på AWS med hjälp av en IAM-policymall

  2. ScaleGrid nu tillgängligt i Sydney AWS-regionen

  3. välj * från tabell vs välj colA, colB, etc. från tabell intressant beteende i SQL Server 2005

  4. Insamlingstider för Spotlight molnlarm