MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

4 funções que extraem microssegundos de um valor de tempo no MariaDB


Abaixo estão 4 funções que permitem retornar a parte de microssegundos de um valor de tempo no MariaDB.

O MICROSECOND() Função


O MICROSECOND() função retorna a parte de microssegundos de um determinado TIME ou DATETIME expressão. Ele aceita um argumento, que é o tempo do qual você deseja extrair os microssegundos.

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

Resultado:
+--------------------------------+| MICROSSEGUNDO('10:45:30.123456') |+--------------------------------+| 123456 |+--------------------------------+

TIME os valores podem estar no intervalo '-838:59:59.999999' para '838:59:59.999999' .

TIME os valores também podem ser negativos. Nesses casos, MICROSECOND() retorna um valor positivo.

Aqui está um valor de tempo negativo com uma parte de microssegundos:
SELECT MICROSECOND('-838:59:59.999999'); 

Resultado:
+----------------------------------+| MICROSSEGUNDO('-838:59:59.999999') |+----------------------------------+| 999999 |+----------------------------------+

A parte de microssegundos é extraída conforme o esperado.

O EXTRACT() Função


O EXTRACT() A função permite extrair uma unidade especificada do valor de data/hora. Portanto, você pode usá-lo para extrair os microssegundos (assim como outras unidades) do valor de tempo.

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

Resultado:
+---------------------------------------------+ | EXTRACT(MICROSSEGUNDO DE '10:45:30.123456') |+------------------------------------ ---------+| 123456 |+-------------------------------------------------------------+ 

O TIME_FORMAT() Função


O TIME_FORMAT() A função permite que você formate um valor de tempo com base em uma string de formato. A string de formato especifica como a hora deve ser formatada.

Portanto, você pode usar esta função para retornar os microssegundos (assim como as horas, minutos e segundos) da hora.

O %f especificador de formato retorna os microssegundos:
SELECT TIME_FORMAT('10:07:30.003456', '%f'); 

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

Você também pode usar o $s ou $S especificador de formato para retornar a parte dos segundos:
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"; 

Resultado:
+---------+--------------+-----------+| Segundos | Microssegundos | Ambos |+---------+--------------+-----------+| 30 | 123456 | 30.123456 |+---------+--------------+-----------+

O TIME_FORMAT() A função aceita um subconjunto das strings de formato que podem ser usadas com o DATE_FORMAT() função. Veja Strings de Formato MariaDB para uma lista completa de strings/especificadores de formato que podem ser usados ​​com DATE_FORMAT() . O TIME_FORMAT() A função só aceita especificadores de formato para horas, minutos e segundos/sub segundos. Qualquer outro especificador de formato resulta em null ou 0 sendo devolvido.

O DATE_FORMAT() Função


O DATE_FORMAT() A função permite que você formate um valor de data ou data e hora com base em uma string de formato. A string de formato especifica como a data/hora deve ser formatada.

Podemos, portanto, usar os mesmos especificadores de formato que usamos com o TIME_FORMAT() função no exemplo anterior. No entanto, DATE_FORMAT() não aceita um TIME valor, então precisaremos passar um DATETIME valor.
SELECT DATE_FORMAT('2023-01-01 10:07:30.007123', '%f'); 

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

Passando apenas um TIME value não funciona com esta função:
SELECT DATE_FORMAT('10:07:30.007123', '%f'); 

Resultado:
+--------------------------------------+| DATE_FORMAT('10:07:30.007123', '%f') |+--------------------------------- -----+| NULL |+--------------------------------------+1 linha no conjunto, 1 aviso ( 0,003 segundos)

Vejamos o aviso:
SHOW WARNINGS; 

Resultado:
+---------+------+----------------------------- ----------------+| Nível | Código | Mensagem |+---------+------+------------------- ---------------+| Aviso | 1292 | Valor de data e hora incorreto:'10:07:30.007123' |+---------+------+-------------------- -------------------------+