W MySQL funkcja TO_SECONDS() funkcja zwraca liczbę sekund od roku 0.
Tej funkcji nie należy mylić z TIME_TO_SECONDS() funkcja, która zwraca liczbę sekund w podanej wartości czasu podanej jako argument.
Składnia
Składnia wygląda tak:
TO_SECONDS(expr)
Gdzie expr jest wartością daty lub daty i godziny (do porównania z rokiem 0).
Przykład 1 – Użycie argumentu „data”
Oto przykład z użyciem argumentu daty.
SELECT TO_SECONDS('2021-09-21');
Wynik:
+--------------------------+
| TO_SECONDS('2021-09-21') |
+--------------------------+
| 63799401600 |
+--------------------------+
Przykład 2 – Użycie argumentu „data-godzina”
Oto przykład z użyciem argumentu daty i godziny.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Wynik:
+-----------------------------------+
| TO_SECONDS('2021-09-21 10:30:25') |
+-----------------------------------+
| 63799439425 |
+-----------------------------------+
Przykład 3 – Korzystanie z aktualnej daty
W tym przykładzie przekazuję CURDATE() funkcja jako argument, aby użyć bieżącej daty.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Wynik:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Przykład 4 – Korzystanie z bieżącej daty i godziny
W tym przykładzie przekazuję NOW() funkcja jako argument, aby użyć bieżącej daty i czasu.
SELECT TO_SECONDS(NOW()) AS 'Result';
Wynik:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Dwucyfrowe lata
MySQL ma specjalne zasady postępowania z datami z latami dwucyfrowymi. Dwucyfrowe lata są niejednoznaczne, ponieważ wiek jest nieznany. Zasadniczo obowiązują następujące zasady:
- Wartości roku w zakresie
00-69są konwertowane na2000-2069. - Wartości roku w zakresie
70-99są konwertowane na1970-1999.
Aby uzyskać pełne wyjaśnienie, zobacz dokumentację MySQL o tym, jak MySQL radzi sobie z dwucyfrowymi latami.
Oto przykład do zademonstrowania:
SELECT
TO_SECONDS('69-10-07') AS '69 (2069)',
TO_SECONDS('70-10-07') AS '70 (1970)';
Wynik:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Skrócone daty
Możesz także użyć skróconych dat. Oto przykład z wykorzystaniem poprzednich wartości dat w skróconej formie.
SELECT
TO_SECONDS('691007') AS '69 (2069)',
TO_SECONDS('701007') AS '70 (1970)';
Wynik:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Wcześniejsze daty
Dokumentacja MySQL ostrzega, że TO_SECONDS() funkcja:
nie jest przeznaczony do użytku z wartościami, które poprzedzają nadejście kalendarza gregoriańskiego (1582), ponieważ nie uwzględnia dni, które zostały utracone podczas zmiany kalendarza. W przypadku dat sprzed 1582 r. (i prawdopodobnie późniejszego roku w innych lokalizacjach) wyniki tej funkcji nie są wiarygodne.