sql >> Databasteknik >  >> RDS >> MariaDB

Hur MICROSECOND() fungerar i MariaDB

I MariaDB, MICROSECOND() är en inbyggd datum- och tidsfunktion som returnerar mikrosekundersdelen av ett givet tidsuttryck.

Den accepterar ett argument, vilket är tiden du vill extrahera mikrosekunderna från.

Sekunderna returneras som ett tal i intervallet 0 till 999999 .

Syntax

Syntaxen ser ut så här:

MICROSECOND(time)

Där time är tidsuttrycket att hämta mikrosekunderna från.

Exempel

Här är ett exempel:

SELECT MICROSECOND('10:30:45.123456');

Resultat:

+--------------------------------+
| MICROSECOND('10:30:45.123456') |
+--------------------------------+
|                         123456 |
+--------------------------------+

Följande tidsuttryck inkluderar inte uttryckligen mikrosekunder:

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

Resultat:

+-------------------------+
| MICROSECOND('10:30:45') |
+-------------------------+
|                       0 |
+-------------------------+

Så resultatet är 0 .

Datetime-värden

Det fungerar också med datetime-värden:

SELECT MICROSECOND('2030-02-01 10:30:45.123456');

Resultat:

+-------------------------------------------+
| MICROSECOND('2030-02-01 10:30:45.123456') |
+-------------------------------------------+
|                                    123456 |
+-------------------------------------------+

Datumvärden

Att passera ett datum utan tid returnerar 0 , tillsammans med en varning.

Exempel:

SELECT MICROSECOND('2025-10-31');

Resultat:

+---------------------------+
| MICROSECOND('2025-10-31') |
+---------------------------+
|                         0 |
+---------------------------+
1 row in set, 1 warning (0.001 sec)

Vi kan se varningen genom att köra följande kod:

SHOW WARNINGS;

Resultat:

+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2025-10-31' |
+---------+------+----------------------------------------------+

Aktuellt datum

Vi kan skicka NOW() som datetime-argument för att använda den aktuella tiden:

SELECT 
    NOW(6),
    MICROSECOND(NOW(6));

Resultat:

+----------------------------+---------------------+
| NOW(6)                     | MICROSECOND(NOW(6)) |
+----------------------------+---------------------+
| 2021-05-16 14:41:09.098168 |               98168 |
+----------------------------+---------------------+

I det här fallet specificerade jag att NOW() bör returnera en bråkdelprecision av 6 (vilket gör att den returnerar mikrosekunder).

Här är den igen med lägre precision:

SELECT 
    NOW(3),
    MICROSECOND(NOW(3));

Resultat:

+-------------------------+---------------------+
| NOW(3)                  | MICROSECOND(NOW(3)) |
+-------------------------+---------------------+
| 2021-05-16 14:42:35.831 |              831000 |
+-------------------------+---------------------+

Ogiltiga argument

När ett ogiltigt tidsargument skickades, MICROSECOND() returnerar null :

SELECT MICROSECOND('10:75:00.123456');

Resultat:

+--------------------------------+
| MICROSECOND('10:75:00.123456') |
+--------------------------------+
|                           NULL |
+--------------------------------+

Argument saknas

Anropar MICROSECOND() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT MICROSECOND();

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Och ett annat exempel:

SELECT MICROSECOND('10:30:45.123', '06:30:45.123');

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45.123')' at line 1

  1. Oracle 11g får alla matchade förekomster av ett reguljärt uttryck

  2. Hur använder jag det aktuella datumet i en HQL-fråga med en Oracle-databas?

  3. Hur tar man bort alla icke-alfanumeriska tecken från en sträng i MySQL?

  4. Hur lindar man PL SQL-kod i Oracle?