MariaDB
 sql >> Database >  >> RDS >> MariaDB

4 Funzioni che restituiscono la parte dei secondi da un valore temporale in MariaDB

Di seguito sono elencate 4 funzioni che consentono di restituire la parte dei secondi da un valore temporale in MariaDB.

Il SECOND() Funzione

Il SECOND() la funzione restituisce la parte dei secondi di un dato TIME o DATETIME espressione. Accetta un argomento, che è il tempo da cui vuoi estrarre i secondi.

Esempio:

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

Risultato:

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

TIME i valori possono essere compresi nell'intervallo '-838:59:59.999999' a '838:59:59.999999' . Ciò include i microsecondi, ma SECOND() restituisce solo la parte dei secondi (c'è un MICROSECOND() funzione per la restituzione dei microsecondi).

TIME i valori possono anche essere negativi. In questi casi, SECOND() restituisce un valore positivo.

Ecco un valore temporale negativo con una parte di microsecondi:

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

Risultato:

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

La parte dei secondi viene estratta come previsto.

Il EXTRACT() Funzione

Il EXTRACT() la funzione consente di estrarre un'unità specificata dal valore di data/ora. Pertanto, puoi usarlo per estrarre i secondi (così come altre unità) dal valore del tempo.

Esempio:

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

Risultato:

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

Il TIME_FORMAT() Funzione

Il TIME_FORMAT() La funzione consente di formattare un valore di tempo in base a una stringa di formato. La stringa di formato specifica come deve essere formattata l'ora.

È quindi possibile utilizzare questa funzione per restituire i secondi (oltre a minuti e ore) dall'ora.

Il %s e %S gli identificatori di formato restituiscono entrambi i secondi con due cifre:

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

Risultato:

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

Puoi anche usare il $f identificatore di formato per restituire i secondi secondari a sei cifre:

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

Risultato:

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

Il TIME_FORMAT() la funzione accetta un sottoinsieme delle stringhe di formato che possono essere utilizzate con DATE_FORMAT() funzione. Consulta le stringhe di formato MariaDB per un elenco completo di stringhe di formato/specificatori che possono essere utilizzati con DATE_FORMAT() . Il TIME_FORMAT() la funzione accetta solo identificatori di formato per ore, minuti e secondi/secondi secondari. Qualsiasi altro identificatore di formato restituisce null o 0 in fase di restituzione.

Il DATE_FORMAT() Funzione

Il DATE_FORMAT() La funzione consente di formattare un valore di data o data e ora in base a una stringa di formato. La stringa di formato specifica come formattare la data/ora.

Possiamo quindi usare gli stessi identificatori di formato che abbiamo usato con TIME_FORMAT() funzione nell'esempio precedente. Tuttavia, DATE_FORMAT() non accetta un TIME valore, quindi dovremo passare un DATETIME valore.

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

Risultato:

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

Passando solo un TIME value non funziona con questa funzione:

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

Risultato:

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