sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer FROM_UNIXTIME() i MariaDB

I MariaDB, FROM_UNIXTIME() er en indbygget dato- og tidsfunktion, der returnerer en dato-tidsværdi baseret på et givet unix-tidsstempel.

Du videregiver unix-tidsstemplet til funktionen, når du kalder den.

Resultatet returneres i 'YYYY-MM-DD HH:MM:SS' eller YYYYMMDDHHMMSS.uuuuuu format, afhængigt af om funktionen bruges i en streng eller numerisk kontekst.

Værdien er udtrykt i den aktuelle tidszone.

Syntaks

Funktionen kan bruges på følgende måder:

FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)

Hvor unix_timestamp er unix-tidsstemplet og format er en valgfri formatstreng til at formatere resultatet.

Eksempel

Her er et eksempel:

SELECT FROM_UNIXTIME(1721428321);

Resultat:

+---------------------------+
| FROM_UNIXTIME(1721428321) |
+---------------------------+
| 2024-07-20 08:32:01       |
+---------------------------+

Mikrosekunder

Her er et eksempel, der inkluderer mikrosekunder:

SELECT FROM_UNIXTIME(1721428321.123456);

Resultat:

+----------------------------------+
| FROM_UNIXTIME(1721428321.123456) |
+----------------------------------+
| 2024-07-20 08:32:01.123456       |
+----------------------------------+

Numerisk kontekst

Når du bruger FROM_UNIXTIME() i en numerisk kontekst returneres resultatet i YYYYMMDDHHMMSS.uuuuuu format:

SELECT FROM_UNIXTIME(1721428321.123456) + 0;

Resultat:

+--------------------------------------+
| FROM_UNIXTIME(1721428321.123456) + 0 |
+--------------------------------------+
|                20240720083201.123456 |
+--------------------------------------+

Formater resultatet

Her er et eksempel på at sende en formatstreng for at formatere resultatet:

SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');

Resultat:

+-------------------------------------------+
| FROM_UNIXTIME(1721428321, '%W, %D %M %Y') |
+-------------------------------------------+
| Saturday, 20th July 2024                  |
+-------------------------------------------+

Se MariaDB-datoformatstrenge for en liste over formatstrenge, der kan bruges med FROM_UNIXTIME() funktion.

Tidsstempelgrænse

Tidsstempler i MariaDB har en maksimal værdi på 2147483647 . Dette skyldes den underliggende 32-bit begrænsning. Brug af funktionen på et tidsstempel ud over dette resulterer i null bliver returneret.

Her er et eksempel, der viser denne begrænsning:

SELECT 
    FROM_UNIXTIME(2147483647),
    FROM_UNIXTIME(2147483648);

Resultat:

+---------------------------+---------------------------+
| FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) |
+---------------------------+---------------------------+
| 2038-01-19 13:14:07       | NULL                      |
+---------------------------+---------------------------+

Tidszone

Resultatet af FROM_UNIXTIME() er udtrykt i den aktuelle tidszone.

Følgende eksempler bruger det samme unix-tidsstempel med forskellige tidszoner:

SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);

Resultat:

+---------------------------+
| FROM_UNIXTIME(2147483647) |
+---------------------------+
| 2038-01-18 22:14:07       |
+---------------------------+

Skift til en anden tidszone, og kør den igen:

SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);

Resultat:

+---------------------------+
| FROM_UNIXTIME(2147483647) |
+---------------------------+
| 2038-01-19 03:14:07       |
+---------------------------+

Nuværende Unix-tidsstempel

Her er et eksempel, der bruger UNIX_TIMESTAMP() funktion for at returnere det aktuelle unix-tidsstempel:

SELECT
    UNIX_TIMESTAMP(),
    FROM_UNIXTIME(UNIX_TIMESTAMP());

Resultat:

+------------------+---------------------------------+
| UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) |
+------------------+---------------------------------+
|       1621734047 | 2021-05-23 11:40:47             |
+------------------+---------------------------------+

Manglende argument

Kalder FROM_UNIXTIME() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT FROM_UNIXTIME();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'

Og endnu et eksempel:

SELECT FROM_UNIXTIME( 1, 2, 3 );

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'

  1. POWER() Funktion i Oracle

  2. FILE_ID() vs FILE_IDEX() i SQL Server:Hvad er forskellen?

  3. 4 måder at finde rækker, der indeholder store bogstaver i MariaDB

  4. Hvad er det maksimale antal tegn, som nvarchar(MAX) kan indeholde?