V MariaDB, FROM_UNIXTIME()
je vestavěná funkce data a času, která vrací hodnotu datetime na základě daného unixového časového razítka.
Unixové časové razítko předáte funkci, když ji voláte.
Výsledek je vrácen v 'YYYY-MM-DD HH:MM:SS'
nebo YYYYMMDDHHMMSS.uuuuuu
formát, v závislosti na tom, zda je funkce použita v řetězcovém nebo číselném kontextu.
Hodnota je vyjádřena v aktuálním časovém pásmu.
Syntaxe
Funkci lze použít následujícími způsoby:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Kde unix_timestamp
je unixové časové razítko a format
je volitelný formátovací řetězec pro formátování výsledku.
Příklad
Zde je příklad:
SELECT FROM_UNIXTIME(1721428321);
Výsledek:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Mikrosekundy
Zde je příklad, který zahrnuje mikrosekundy:
SELECT FROM_UNIXTIME(1721428321.123456);
Výsledek:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Číselný kontext
Při použití FROM_UNIXTIME()
v číselném kontextu je výsledek vrácen v YYYYMMDDHHMMSS.uuuuuu
formát:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Výsledek:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Formátovat výsledek
Zde je příklad předání formátovacího řetězce pro formátování výsledku:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Výsledek:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Seznam formátovacích řetězců, které lze použít s FROM_UNIXTIME()
, najdete v části MariaDB Date Format Strings funkce.
Limit časového razítka
Časová razítka v MariaDB mají maximální hodnotu 2147483647
. To je způsobeno základním 32bitovým omezením. Použití funkce na časovém razítku za tímto výsledkem má za následek null
se vrací.
Zde je příklad, který toto omezení demonstruje:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Výsledek:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Časové pásmo
Výsledek FROM_UNIXTIME()
je vyjádřeno v aktuálním časovém pásmu.
Následující příklady používají stejné unixové časové razítko s různými časovými pásmy:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Výsledek:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Přepněte na jiné časové pásmo a spusťte jej znovu:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Výsledek:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Aktuální časové razítko Unix
Zde je příklad, který používá UNIX_TIMESTAMP()
funkce pro vrácení aktuálního unixového časového razítka:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Výsledek:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Chybí argument
Volání FROM_UNIXTIME()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT FROM_UNIXTIME();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
A další příklad:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'