In MySQL, il TO_SECONDS()
la funzione restituisce il numero di secondi dall'anno 0.
Questa funzione non deve essere confusa con TIME_TO_SECONDS()
funzione, che restituisce il numero di secondi in un dato valore temporale fornito come argomento.
Sintassi
La sintassi è questa:
TO_SECONDS(expr)
Dove expr
è un valore di data o data/ora (da confrontare con l'anno 0).
Esempio 1:utilizzo di un argomento "data"
Ecco un esempio che utilizza un argomento data.
SELECT TO_SECONDS('2021-09-21');
Risultato:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Esempio 2:utilizzo di un argomento "datetime"
Ecco un esempio che utilizza un argomento datetime.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Risultato:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Esempio 3:utilizzo della data corrente
In questo esempio, passo il CURDATE()
funzione come argomento per utilizzare la data corrente.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Risultato:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Esempio 4:utilizzo della data e dell'ora correnti
In questo esempio, passo il NOW()
funzione come argomento per utilizzare la data e l'ora correnti.
SELECT TO_SECONDS(NOW()) AS 'Result';
Risultato:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Anni a due cifre
MySQL ha regole speciali per gestire le date con anni a due cifre. Gli anni a due cifre sono ambigui perché il secolo è sconosciuto. Fondamentalmente, si applicano le seguenti regole:
- Valori dell'anno nell'intervallo
00-69
vengono convertiti in2000-2069
. - Valori dell'anno nell'intervallo
70-99
vengono convertiti in1970-1999
.
Per una spiegazione completa, consulta la documentazione di MySQL su come MySQL gestisce gli anni a due cifre.
Ecco un esempio da dimostrare:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Risultato:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Date abbreviate
Puoi anche usare date abbreviate. Ecco un esempio che utilizza i valori di data precedenti in forma abbreviata.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Risultato:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Date precedenti
La documentazione MySQL avverte che TO_SECONDS()
funzione:
non è destinato all'uso con valori che precedono l'avvento del calendario gregoriano (1582), perché non tiene conto dei giorni persi quando il calendario è stato modificato. Per le date precedenti al 1582 (e forse un anno successivo in altre località), i risultati di questa funzione non sono affidabili.