How MICROSECOND() Works in MariaDB

In MariaDB, MICROSECOND() is a built-in date and time function that returns the microseconds portion of a given time expression.

It accepts one argument, which is the time you want to extract the microseconds from.

The seconds are returned as a number in the range 0 to 999999.

Syntax

The syntax goes like this:

MICROSECOND(time)

Where time is the time expression to get the microseconds from.

Example

Here’s an example:

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

Result:

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

The following time expression doesn’t explicitly include microseconds:

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

Result:

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

So the result is 0.

Datetime Values

It also works with datetime values:

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

Result:

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

Date Values

Passing a date without a time returns 0, along with a warning.

Example:

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

Result:

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

We can see the warning by running the following code:

SHOW WARNINGS;

Result:

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

Current Date

We can pass NOW() as the datetime argument to use the current time:

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

Result:

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

In this case I specified that NOW() should return a fractional precision of 6 (which makes it return microseconds).

Here it is again with a lower precision:

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

Result:

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

Invalid Arguments

When passed an invalid time argument, MICROSECOND() returns null:

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

Result:

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

Missing Argument

Calling MICROSECOND() with the wrong number of arguments, or without passing any arguments, results in an error:

SELECT MICROSECOND();

Result:

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

And another example:

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

Result:

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