W MariaDB, FROM_UNIXTIME()
to wbudowana funkcja daty i czasu, która zwraca wartość daty i czasu na podstawie podanego uniksowego znacznika czasu.
Uniksowy znacznik czasu przekazujesz funkcji, kiedy ją wywołujesz.
Wynik jest zwracany w formacie 'YYYY-MM-DD HH:MM:SS'
lub YYYYMMDDHHMMSS.uuuuuu
format, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym czy liczbowym.
Wartość jest wyrażona w aktualnej strefie czasowej.
Składnia
Funkcji można używać w następujący sposób:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Gdzie unix_timestamp
to uniksowy znacznik czasu i format
jest opcjonalnym ciągiem formatu do sformatowania wyniku.
Przykład
Oto przykład:
SELECT FROM_UNIXTIME(1721428321);
Wynik:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Mikrosekundy
Oto przykład obejmujący mikrosekundy:
SELECT FROM_UNIXTIME(1721428321.123456);
Wynik:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Kontekst numeryczny
Używając FROM_UNIXTIME()
w kontekście numerycznym wynik jest zwracany w formacie YYYYMMDDHHMMSS.uuuuuu
format:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Wynik:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Sformatuj wynik
Oto przykład przekazywania ciągu formatującego w celu sformatowania wyniku:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Wynik:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Zobacz ciągi formatu daty MariaDB, aby uzyskać listę ciągów formatujących, których można użyć z FROM_UNIXTIME()
funkcja.
Limit sygnatury czasowej
Sygnatury czasowe w MariaDB mają maksymalną wartość 2147483647
. Wynika to z podstawowego ograniczenia 32-bitowego. Użycie funkcji na znaczniku czasu poza tym powoduje null
zostanie zwrócony.
Oto przykład demonstrujący to ograniczenie:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Wynik:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Strefa czasowa
Wynik FROM_UNIXTIME()
jest wyrażony w aktualnej strefie czasowej.
Poniższe przykłady używają tego samego uniksowego znacznika czasu z różnymi strefami czasowymi:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Wynik:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Przełącz się na inną strefę czasową i uruchom ją ponownie:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Wynik:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Aktualna sygnatura czasowa systemu Unix
Oto przykład, który używa UNIX_TIMESTAMP()
funkcja zwracająca aktualny uniksowy znacznik czasu:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Wynik:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Brakujący argument
Wywołanie FROM_UNIXTIME()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT FROM_UNIXTIME();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
I kolejny przykład:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'