sql >> Base de Datos >  >> RDS >> MariaDB

4 funciones que devuelven la parte de segundos de un valor de tiempo en MariaDB

A continuación hay 4 funciones que le permiten devolver la parte de segundos de un valor de tiempo en MariaDB.

El SECOND() Función

El SECOND() la función devuelve la parte de los segundos de un TIME dado o DATETIME expresión. Acepta un argumento, que es el tiempo del que desea extraer los segundos.

Ejemplo:

SELECT SECOND('03:45:30');

Resultado:

+--------------------+
| SECOND('03:45:30') |
+--------------------+
|                 30 |
+--------------------+

TIME los valores pueden estar en el rango '-838:59:59.999999' a '838:59:59.999999' . Esto incluye microsegundos, pero SECOND() devuelve solo la parte de los segundos (hay un MICROSECOND() función para devolver microsegundos).

TIME Los valores también pueden ser negativos. En tales casos, SECOND() devuelve un valor positivo.

Aquí hay un valor de tiempo negativo con una parte de microsegundos:

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

Resultado:

+-----------------------------+
| SECOND('-838:59:59.999999') |
+-----------------------------+
|                          59 |
+-----------------------------+

La segunda parte se extrae como se esperaba.

El EXTRACT() Función

El EXTRACT() La función le permite extraer una unidad específica del valor de fecha/hora. Por lo tanto, puede usarlo para extraer los segundos (así como otras unidades) del valor del tiempo.

Ejemplo:

SELECT EXTRACT(SECOND FROM '10:47:01');

Resultado:

+---------------------------------+
| EXTRACT(SECOND FROM '10:47:01') |
+---------------------------------+
|                               1 |
+---------------------------------+

El TIME_FORMAT() Función

El TIME_FORMAT() La función le permite formatear un valor de tiempo basado en una cadena de formato. La cadena de formato especifica cómo debe formatearse la hora.

Por lo tanto, puede utilizar esta función para devolver los segundos (así como los minutos y las horas) a partir de la hora.

El %s y %S ambos especificadores de formato devuelven los segundos con dos dígitos:

SELECT 
    TIME_FORMAT('10:07:30', '%s'),
    TIME_FORMAT('10:07:30', '%S');

Resultado:

+-------------------------------+-------------------------------+
| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |
+-------------------------------+-------------------------------+
| 30                            | 30                            |
+-------------------------------+-------------------------------+

También puede usar el $f especificador de formato para devolver subsegundos de seis dígitos:

SELECT 
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
    TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";

Resultado:

+--------------+-----------+
| Microseconds | Both      |
+--------------+-----------+
| 123456       | 30.123456 |
+--------------+-----------+

El TIME_FORMAT() La función acepta un subconjunto de las cadenas de formato que se pueden usar con DATE_FORMAT() función. Consulte Cadenas de formato de MariaDB para obtener una lista completa de cadenas/especificadores de formato que se pueden usar con DATE_FORMAT() . El TIME_FORMAT() La función solo acepta especificadores de formato para horas, minutos y segundos/subsegundos. Cualquier otro especificador de formato da como resultado null o 0 siendo devuelto.

El DATE_FORMAT() Función

El DATE_FORMAT() La función le permite formatear una fecha o un valor de fecha y hora en función de una cadena de formato. La cadena de formato especifica cómo debe formatearse la fecha/hora.

Por lo tanto, podemos usar los mismos especificadores de formato que usamos con TIME_FORMAT() función del ejemplo anterior. Sin embargo, DATE_FORMAT() no acepta un TIME valor, por lo que necesitaremos pasar un DATETIME valor.

SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');

Resultado:

+------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30', '%s') |
+------------------------------------------+
| 30                                       |
+------------------------------------------+

Pasando solo un TIME value no funciona con esta función:

SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';

Resultado:

+------+
| %s   |
+------+
| 00   |
+------+