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'