从 MariaDB 中的时间值中提取微秒的 4 个函数

发布于

以下是 4 个函数,使您能够从 MariaDB 中的时间值返回微秒部分。

函数MICROSECOND()

该函数返回给定表达式的微秒部分。它接受一个参数,即您要从中提取微秒的时间。MICROSECOND()TIME``DATETIME

例:

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

结果:

+——————————–+ | MICROSECOND(‘10:45:30.123456’) | +——————————–+ | 123456 | +——————————–+

TIME值可以在“范围到”中。'-838:59:59.999999'``'838:59:59.999999'

TIME值也可以为负数。在这种情况下,返回一个正值。MICROSECOND()

下面是带有微秒部分的负时间值:

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

结果:

+———————————-+ | MICROSECOND(’-838:59:59.999999’) | +———————————-+ | 999999 | +———————————-+

微秒部分按预期提取。

函数EXTRACT()

该函数允许您从日期/时间值中提取指定的单位。因此,您可以使用它从时间值中提取微秒(以及其他单位)。EXTRACT()

例:

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

结果:

+———————————————+ | EXTRACT(MICROSECOND FROM ‘10:45:30.123456’) | +———————————————+ | 123456 | +———————————————+

函数TIME_FORMAT()

该函数允许您根据格式字符串设置时间值的格式。格式字符串指定应如何设置时间格式。TIME_FORMAT()

因此,您可以使用此函数从时间返回微秒(以及小时、分钟和秒)。

格式说明符返回微秒:%f

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

结果:

+————————————–+ | TIME_FORMAT(‘10:07:30.003456’, ‘%f’) | +————————————–+ | 003456 | +————————————–+

您还可以使用 theorformat 说明符返回秒部分:$s``$S

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

结果:

+———+————–+———–+ | Seconds | Microseconds | Both | +———+————–+———–+ | 30 | 123456 | 30.123456 | +———+————–+———–+

该函数接受可与函数一起使用的格式字符串的子集。请参阅MariaDB格式字符串 获取可用于的格式字符串/说明符的完整列表。该函数仅接受小时、分钟和秒/亚秒的格式说明符。任何其他格式说明符都会导致返回。TIME_FORMAT()``DATE_FORMAT()``DATE_FORMAT()``TIME_FORMAT()``null``0

函数DATE_FORMAT()

该函数允许您根据格式字符串格式化日期或日期时间值。格式字符串指定应如何设置日期/时间的格式。DATE_FORMAT()

因此,我们可以使用与上一个示例中的函数相同的格式说明符。但是,不接受 avalue,因此我们需要传递 avalue。TIME_FORMAT()``DATE_FORMAT()``TIME``DATETIME

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

结果:

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

仅传递 avalue 不适用于此函数:TIME

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

结果:

+————————————–+ | DATE_FORMAT(‘10:07:30.007123’, ‘%f’) | +————————————–+ | NULL | +————————————–+ 1 row in set, 1 warning (0.003 sec)

让我们看看警告:

SHOW WARNINGS;

结果:

+———+——+———————————————+ | Level | Code | Message | +———+——+———————————————+ | Warning | 1292 | Incorrect datetime value: ‘10:07:30.007123’ | +———+——+———————————————+