Dans MariaDB, UNIX_TIMESTAMP()
est une fonction de date et d'heure intégrée qui renvoie un horodatage Unix, basé sur son argument (ou son absence d'argument).
Cela fonctionne comme ceci :
- Lorsqu'il est appelé sans un argument, il renvoie un horodatage Unix (secondes depuis '1970-01-01 00:00:00' UTC) sous la forme d'un entier non signé.
- Lorsqu'il est appelé avec un argument, il renvoie la valeur de l'argument en secondes depuis '1970-01-01 00:00:00' UTC.
La fonction inverse de UNIX_TIMESTAMP()
est FROM_UNIXTIME()
.
Syntaxe
UNIX_TIMESTAMP()
peut être appelé des deux manières suivantes :
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Où date
est une chaîne de date, une chaîne de date et d'heure, un horodatage ou un nombre au format YYMMDD
ou YYYYMMDD
.
Exemple – Sans argument
Voici un exemple d'appel de UNIX_TIMESTAMP()
sans argument :
SELECT UNIX_TIMESTAMP();
Résultat :
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Cela nous indique que lorsque j'ai exécuté cette instruction, 1622502492 secondes s'étaient écoulées depuis le 1970-01-01 00:00:00.
Exemple – Avec un argument
Voici un exemple avec un argument :
SELECT UNIX_TIMESTAMP('1970-01-02');
Résultat :
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
Dans l'exemple suivant, j'appelle UNIX_TIMESTAMP()
à deux reprises; une fois sans argument, et une fois avec NOW()
comme argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Résultat :
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Chaîne date/heure
Dans l'exemple ci-dessus, NOW()
renvoie une valeur datetime.
Dans cet exemple, je fournis explicitement une chaîne datetime :
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Résultat :
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Microsecondes
UNIX_TIMESTAMP()
prend en charge les microsecondes :
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Résultat :
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Dates numériques
Les dates numériques sont prises en charge :
SELECT UNIX_TIMESTAMP(20201030);
Résultat :
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Argument invalide
Lorsqu'un argument invalide est passé, UNIX_TIMESTAMP()
renvoie null
avec un avertissement :
SELECT UNIX_TIMESTAMP('Homer');
Résultat :
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Vérifiez l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Trop d'arguments
Appel de UNIX_TIMESTAMP()
avec trop d'arguments génère une erreur :
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'