I MariaDB, UNIX_TIMESTAMP()
är en inbyggd datum- och tidsfunktion som returnerar en Unix-tidsstämpel, baserat på dess argument (eller brist på argument).
Det fungerar så här:
- När du ringer utan ett argument, returnerar det en Unix-tidsstämpel (sekunder sedan '1970-01-01 00:00:00' UTC) som ett osignerat heltal.
- När den kallas med ett argument, returnerar det värdet på argumentet som sekunder sedan '1970-01-01 00:00:00' UTC.
Den inversa funktionen av UNIX_TIMESTAMP()
är FROM_UNIXTIME()
.
Syntax
UNIX_TIMESTAMP()
kan anropas på följande två sätt:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Där date
är en datumsträng, en datetime-sträng, en tidsstämpel eller ett tal i formatet YYMMDD
eller YYYYMMDD
.
Exempel – Utan ett argument
Här är ett exempel på hur du anropar UNIX_TIMESTAMP()
utan argument:
SELECT UNIX_TIMESTAMP();
Resultat:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Detta säger oss att när jag körde det uttalandet hade 1622502492 sekunder gått sedan 1970-01-01 00:00:00.
Exempel – med ett argument
Här är ett exempel med ett argument:
SELECT UNIX_TIMESTAMP('1970-01-02');
Resultat:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
I följande exempel anropar jag UNIX_TIMESTAMP()
dubbelt; en gång utan argument och en gång med NOW()
som argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Resultat:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Datetime String
I exemplet ovan, NOW()
returnerar ett datetime-värde.
I det här exemplet tillhandahåller jag uttryckligen en datetime-sträng:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Resultat:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Mikrosekunder
UNIX_TIMESTAMP()
stöder mikrosekunder:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Resultat:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Numeriska datum
Numeriska datum stöds:
SELECT UNIX_TIMESTAMP(20201030);
Resultat:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Ogiltigt argument
När alla ogiltiga argument har skickats, UNIX_TIMESTAMP()
returnerar null
med en varning:
SELECT UNIX_TIMESTAMP('Homer');
Resultat:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Kontrollera varningen:
SHOW WARNINGS;
Resultat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
För många argument
Anropar UNIX_TIMESTAMP()
med för många argument resulterar i ett fel:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'