sql >> Databasteknik >  >> RDS >> MariaDB

Hur UNIX_TIMESTAMP() fungerar i MariaDB

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'

  1. Flera mysql INSERT-satser i en fråga php

  2. 11 SQL Server-index bästa praxis för förbättrad prestandajustering

  3. Det gick inte att få spring boot för att automatiskt skapa databasschema

  4. SQL-fel med Order By i Subquery