W MariaDB, UNIX_TIMESTAMP() jest wbudowaną funkcją daty i czasu, która zwraca uniksowy znacznik czasu na podstawie swojego argumentu (lub braku argumentu).
Działa to tak:
- Po wywołaniu bez argument, zwraca uniksowy znacznik czasu (sekundy od ‘1970-01-01 00:00:00’ UTC) jako liczbę całkowitą bez znaku.
- Kiedy dzwonisz z argument, zwraca wartość argumentu w sekundach od ‘1970-01-01 00:00:00’ UTC.
Funkcja odwrotna UNIX_TIMESTAMP() to FROM_UNIXTIME() .
Składnia
UNIX_TIMESTAMP() można wywołać na dwa sposoby:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Gdzie date to ciąg daty, ciąg daty i godziny, znacznik czasu lub liczba w formacie YYMMDD lub YYYYMMDD .
Przykład – bez argumentu
Oto przykład wywołania UNIX_TIMESTAMP() bez argumentu:
SELECT UNIX_TIMESTAMP(); Wynik:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
To mówi nam, że kiedy uruchomiłem to oświadczenie, od 1970-01-01 00:00:00 minęło 1622502492 sekund.
Przykład – z argumentem
Oto przykład z argumentem:
SELECT UNIX_TIMESTAMP('1970-01-02'); Wynik:
+------------------------------+
| UNIX_TIMESTAMP('1970-01-02') |
+------------------------------+
| 50400 |
+------------------------------+
W poniższym przykładzie wywołuję UNIX_TIMESTAMP() dwa razy; raz bez argumentu, a raz z NOW() jako argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW()); Wynik:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Ciąg daty i godziny
W powyższym przykładzie NOW() zwraca wartość daty i godziny.
W tym przykładzie jawnie podaję ciąg daty i godziny:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47'); Wynik:
+---------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47') |
+---------------------------------------+
| 1604017427 |
+---------------------------------------+ Mikrosekundy
UNIX_TIMESTAMP() obsługuje mikrosekundy:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456'); Wynik:
+----------------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') |
+----------------------------------------------+
| 1604017427.123456 |
+----------------------------------------------+ Daty numeryczne
Obsługiwane są daty numeryczne:
SELECT UNIX_TIMESTAMP(20201030); Wynik:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Nieprawidłowy argument
Po przekazaniu jakichkolwiek nieprawidłowych argumentów, UNIX_TIMESTAMP() zwraca null z ostrzeżeniem:
SELECT UNIX_TIMESTAMP('Homer'); Wynik:
+-------------------------+
| UNIX_TIMESTAMP('Homer') |
+-------------------------+
| NULL |
+-------------------------+
1 row in set, 1 warning (0.001 sec) Sprawdź ostrzeżenie:
SHOW WARNINGS; Wynik:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Zbyt wiele argumentów
Wywołanie UNIX_TIMESTAMP() zbyt wiele argumentów powoduje błąd:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03'); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'