sql >> Databáze >  >> RDS >> MariaDB

Jak funguje UNIX_TIMESTAMP() v MariaDB

V MariaDB, UNIX_TIMESTAMP() je vestavěná funkce data a času, která vrací unixové časové razítko na základě jeho argumentu (nebo chybějícího argumentu).

Funguje to takto:

  • Při volání bez argument, vrátí unixové časové razítko (sekundy od ‚1970-01-01 00:00:00‘ UTC) jako celé číslo bez znaménka.
  • Při volání s argument, vrátí hodnotu argumentu jako sekundy od „1970-01-01 00:00:00“ UTC.

Inverzní funkce UNIX_TIMESTAMP() je FROM_UNIXTIME() .

Syntaxe

UNIX_TIMESTAMP() lze volat následujícími dvěma způsoby:

UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)

Kde date je řetězec data, řetězec data a času, časové razítko nebo číslo ve formátu YYMMDD nebo YYYYMMDD .

Příklad – Bez argumentu

Zde je příklad volání UNIX_TIMESTAMP() bez argumentu:

SELECT UNIX_TIMESTAMP();

Výsledek:

+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1622502492 |
+------------------+

To nám říká, že když jsem spustil tento příkaz, od 1970-01-01 00:00:00 uplynulo 1622502492 sekund.

Příklad – s argumentem

Zde je příklad s argumentem:

SELECT UNIX_TIMESTAMP('1970-01-02');

Výsledek:

+------------------------------+
| UNIX_TIMESTAMP('1970-01-02') |
+------------------------------+
|                        50400 |
+------------------------------+

V následujícím příkladu volám UNIX_TIMESTAMP() dvakrát; jednou bez argumentu a jednou s NOW() jako argument.

SELECT 
    UNIX_TIMESTAMP(),
    UNIX_TIMESTAMP(NOW());

Výsledek:

+------------------+-----------------------+
| UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) |
+------------------+-----------------------+
|       1622502678 |            1622502678 |
+------------------+-----------------------+

Řetězec data a času

Ve výše uvedeném příkladu NOW() vrátí hodnotu datetime.

V tomto příkladu výslovně uvádím řetězec datetime:

SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');

Výsledek:

+---------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47') |
+---------------------------------------+
|                            1604017427 |
+---------------------------------------+

Mikrosekundy

UNIX_TIMESTAMP() podporuje mikrosekundy:

SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');

Výsledek:

+----------------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') |
+----------------------------------------------+
|                            1604017427.123456 |
+----------------------------------------------+

Číselná data

Číselná data jsou podporována:

SELECT UNIX_TIMESTAMP(20201030);

Výsledek:

+--------------------------+
| UNIX_TIMESTAMP(20201030) |
+--------------------------+
|               1603980000 |
+--------------------------+

Neplatný argument

Po předání neplatných argumentů UNIX_TIMESTAMP() vrátí null s varováním:

SELECT UNIX_TIMESTAMP('Homer');

Výsledek:

+-------------------------+
| UNIX_TIMESTAMP('Homer') |
+-------------------------+
|                    NULL |
+-------------------------+
1 row in set, 1 warning (0.001 sec)

Zkontrolujte varování:

SHOW WARNINGS;

Výsledek:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Příliš mnoho argumentů

Volání UNIX_TIMESTAMP() s příliš mnoha argumenty vede k chybě:

SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'

  1. SQL DROP COLUMN pro začátečníky

  2. Jak povolím, aby parametr rozevíracího seznamu v SSRS měl výchozí hodnotu -- All -- ?

  3. Jak se připojit k hostiteli PostgreSQL z virtuálního stroje vagrant

  4. Odebrat SCHEMABINDING ze zobrazení na serveru SQL Server