I MySQL er TO_SECONDS()
funktion returnerer antallet af sekunder siden året 0.
Denne funktion må ikke forveksles med TIME_TO_SECONDS()
funktion, som returnerer antallet af sekunder i en given tidsværdi angivet som et argument.
Syntaks
Syntaksen ser sådan ud:
TO_SECONDS(expr)
Hvor expr
er en dato- eller datotidsværdi (der skal sammenlignes med år 0).
Eksempel 1 – Brug af et "dato"-argument
Her er et eksempel, der bruger et datoargument.
SELECT TO_SECONDS('2021-09-21');
Resultat:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Eksempel 2 – Brug af et 'datetime'-argument
Her er et eksempel, der bruger et datetime-argument.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Resultat:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Eksempel 3 – Brug af den aktuelle dato
I dette eksempel sender jeg CURDATE()
fungere som argument for at bruge den aktuelle dato.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Resultat:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Eksempel 4 – Brug af den aktuelle dato og klokkeslæt
I dette eksempel sender jeg NOW()
fungere som argument for at bruge den aktuelle dato og klokkeslæt.
SELECT TO_SECONDS(NOW()) AS 'Result';
Resultat:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Tocifrede år
MySQL har særlige regler for håndtering af datoer med tocifrede årstal. Tocifrede årstal er tvetydige, fordi århundredet er ukendt. Som udgangspunkt gælder følgende regler:
- Årsværdier i området
00-69
er konverteret til2000-2069
. - Årsværdier i området
70-99
er konverteret til1970-1999
.
For en fuldstændig forklaring, se MySQL-dokumentationen om, hvordan MySQL håndterer tocifrede årstal.
Her er et eksempel til demonstration:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Resultat:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Forkortede datoer
Du kan også bruge forkortede datoer. Her er et eksempel, der bruger de tidligere datoværdier i forkortet form.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Resultat:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Tidligere datoer
MySQL-dokumentationen advarer om, at TO_SECONDS()
funktion:
er ikke beregnet til brug med værdier, der går forud for fremkomsten af den gregorianske kalender (1582), fordi den ikke tager højde for de dage, der gik tabt, da kalenderen blev ændret. For datoer før 1582 (og muligvis et senere år i andre lokaliteter) er resultater fra denne funktion ikke pålidelige.