MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment FROM_UNIXTIME() fonctionne dans MariaDB

Dans MariaDB, FROM_UNIXTIME() est une fonction de date et d'heure intégrée qui renvoie une valeur datetime basée sur un horodatage unix donné.

Vous transmettez l'horodatage unix à la fonction lorsque vous l'appelez.

Le résultat est renvoyé au format 'YYYY-MM-DD HH:MM:SS' ou YYYYMMDDHHMMSS.uuuuuu format, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

La valeur est exprimée dans le fuseau horaire actuel.

Syntaxe

La fonction peut être utilisée des manières suivantes :

FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)

unix_timestamp est l'horodatage unix et le format est une chaîne de format facultative pour formater le résultat.

Exemple

Voici un exemple :

SELECT FROM_UNIXTIME(1721428321);

Résultat :

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

Microsecondes

Voici un exemple qui inclut les microsecondes :

SELECT FROM_UNIXTIME(1721428321.123456);

Résultat :

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

Contexte numérique

Lors de l'utilisation de FROM_UNIXTIME() dans un contexte numérique, le résultat est renvoyé en YYYYMMDDHHMMSS.uuuuuu format :

SELECT FROM_UNIXTIME(1721428321.123456) + 0;

Résultat :

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

Formater le résultat

Voici un exemple de transmission d'une chaîne de format pour formater le résultat :

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

Résultat :

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

Voir MariaDB Date Format Strings pour une liste des chaînes de format qui peuvent être utilisées avec le FROM_UNIXTIME() fonction.

Limite d'horodatage

Les horodatages dans MariaDB ont une valeur maximale de 2147483647 . Cela est dû à la limitation sous-jacente de 32 bits. L'utilisation de la fonction sur un horodatage au-delà de cela entraîne null être retourné.

Voici un exemple qui illustre cette limitation :

SELECT 
    FROM_UNIXTIME(2147483647),
    FROM_UNIXTIME(2147483648);

Résultat :

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

Fuseau horaire

Le résultat de FROM_UNIXTIME() est exprimé dans le fuseau horaire actuel.

Les exemples suivants utilisent le même horodatage Unix avec différents fuseaux horaires :

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

Résultat :

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

Passez à un autre fuseau horaire et exécutez-le à nouveau :

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

Résultat :

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

Horodatage Unix actuel

Voici un exemple qui utilise le UNIX_TIMESTAMP() fonction pour renvoyer l'horodatage unix actuel :

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

Résultat :

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

Argument manquant

Appel de FROM_UNIXTIME() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT FROM_UNIXTIME();

Résultat :

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

Et un autre exemple :

SELECT FROM_UNIXTIME( 1, 2, 3 );

Résultat :

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