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-69
są konwertowane na2000-2069
. - Wartości roku w zakresie
70-99
są 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.