I MariaDB, UNIX_TIMESTAMP()
er en indbygget dato- og tidsfunktion, der returnerer et Unix-tidsstempel baseret på dets argument (eller mangel på argument).
Det fungerer sådan her:
- Når kaldet uden et argument, returnerer det et Unix-tidsstempel (sekunder siden '1970-01-01 00:00:00' UTC) som et heltal uden fortegn.
- Når kaldet med et argument, returnerer det værdien af argumentet som sekunder siden '1970-01-01 00:00:00' UTC.
Den omvendte funktion af UNIX_TIMESTAMP()
er FROM_UNIXTIME()
.
Syntaks
UNIX_TIMESTAMP()
kan kaldes på følgende to måder:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Hvor date
er en datostreng, en datetime-streng, et tidsstempel eller et tal i formatet YYMMDD
eller YYYYMMDD
.
Eksempel – Uden et argument
Her er et eksempel på at kalde UNIX_TIMESTAMP()
uden et argument:
SELECT UNIX_TIMESTAMP();
Resultat:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Dette fortæller os, at da jeg kørte den erklæring, var der gået 1622502492 sekunder siden 1970-01-01 00:00:00.
Eksempel – med et argument
Her er et eksempel med et argument:
SELECT UNIX_TIMESTAMP('1970-01-02');
Resultat:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
I det følgende eksempel kalder jeg UNIX_TIMESTAMP()
to gange; én gang uden argument, og én gang med NOW()
som argumentet.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Resultat:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Dato-tids-streng
I ovenstående eksempel, NOW()
returnerer en datetime-værdi.
I dette eksempel angiver jeg eksplicit en datetime-streng:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Resultat:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Mikrosekunder
UNIX_TIMESTAMP()
understøtter mikrosekunder:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Resultat:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Numeriske datoer
Numeriske datoer understøttes:
SELECT UNIX_TIMESTAMP(20201030);
Resultat:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Ugyldigt argument
Når ugyldige argumenter sendes, UNIX_TIMESTAMP()
returnerer null
med en advarsel:
SELECT UNIX_TIMESTAMP('Homer');
Resultat:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Tjek advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
For mange argumenter
Kalder UNIX_TIMESTAMP()
med for mange argumenter resulterer i en fejl:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'