I MariaDB, FROM_UNIXTIME()
är en inbyggd datum- och tidsfunktion som returnerar ett datetime-värde baserat på en given unix-tidsstämpel.
Du skickar unix-tidsstämpeln till funktionen när du anropar den.
Resultatet returneras i 'YYYY-MM-DD HH:MM:SS'
eller YYYYMMDDHHMMSS.uuuuuu
format, beroende på om funktionen används i en sträng eller numerisk kontext.
Värdet uttrycks i den aktuella tidszonen.
Syntax
Funktionen kan användas på följande sätt:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Där unix_timestamp
är unix-tidsstämpeln och format
är en valfri formatsträng för att formatera resultatet.
Exempel
Här är ett exempel:
SELECT FROM_UNIXTIME(1721428321);
Resultat:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Mikrosekunder
Här är ett exempel som inkluderar mikrosekunder:
SELECT FROM_UNIXTIME(1721428321.123456);
Resultat:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Numerisk kontext
När du använder FROM_UNIXTIME()
i ett numeriskt sammanhang returneras resultatet i YYYYMMDDHHMMSS.uuuuuu
format:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Resultat:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Formatera resultatet
Här är ett exempel på hur du skickar en formatsträng för att formatera resultatet:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Resultat:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Se MariaDB Date Format Strings för en lista över formatsträngar som kan användas med FROM_UNIXTIME()
funktion.
Tidsstämpelgräns
Tidstämplar i MariaDB har ett maximalt värde på 2147483647
. Detta beror på den underliggande 32-bitars begränsningen. Att använda funktionen på en tidsstämpel utöver detta resulterar i null
returneras.
Här är ett exempel som visar denna begränsning:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Resultat:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Tidszon
Resultatet av FROM_UNIXTIME()
uttrycks i den aktuella tidszonen.
Följande exempel använder samma unix-tidsstämpel med olika tidszoner:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Resultat:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Byt till en annan tidszon och kör den igen:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Resultat:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Aktuell Unix-tidsstämpel
Här är ett exempel som använder UNIX_TIMESTAMP()
funktion för att returnera den aktuella unix-tidsstämpeln:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Resultat:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Argument saknas
Anropar FROM_UNIXTIME()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT FROM_UNIXTIME();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
Och ett annat exempel:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'