I MySQL, TO_SECONDS()
funktion returnerar antalet sekunder sedan året 0.
Denna funktion ska inte förväxlas med TIME_TO_SECONDS()
funktion, som returnerar antalet sekunder i ett givet tidsvärde som angetts som ett argument.
Syntax
Syntaxen ser ut så här:
TO_SECONDS(expr)
Där expr
är ett datum eller datetime-värde (som ska jämföras med år 0).
Exempel 1 – Använda ett "datum"-argument
Här är ett exempel med ett datumargument.
SELECT TO_SECONDS('2021-09-21');
Resultat:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Exempel 2 – Använda ett "datetime"-argument
Här är ett exempel som använder ett datetime-argument.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Resultat:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Exempel 3 – Använda det aktuella datumet
I det här exemplet skickar jag CURDATE()
fungera som argument för att använda det aktuella datumet.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Resultat:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Exempel 4 – Använda aktuellt datum och tid
I det här exemplet skickar jag NOW()
fungerar som argument för att använda aktuellt datum och tid.
SELECT TO_SECONDS(NOW()) AS 'Result';
Resultat:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Tvåsiffriga år
MySQL har särskilda regler för hantering av datum med tvåsiffrigt årtal. Tvåsiffriga årtal är tvetydiga eftersom århundradet är okänt. I princip gäller följande regler:
- Årsvärden i intervallet
00-69
konverteras till2000-2069
. - Årsvärden i intervallet
70-99
konverteras till1970-1999
.
För en fullständig förklaring, se MySQL-dokumentationen om hur MySQL hanterar tvåsiffriga årtal.
Här är ett exempel att visa:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Resultat:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Förkortade datum
Du kan också använda förkortade datum. Här är ett exempel med tidigare datumvärden i förkortad form.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Resultat:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Tidigare datum
MySQL-dokumentationen varnar för att TO_SECONDS()
funktion:
är inte avsedd att användas med värden som föregår tillkomsten av den gregorianska kalendern (1582), eftersom den inte tar hänsyn till de dagar som gick förlorade när kalendern ändrades. För datum före 1582 (och möjligen ett senare år på andra platser) är resultaten från denna funktion inte tillförlitliga.