sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer UNIX_TIMESTAMP() i MariaDB

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'

  1. Hvordan kan du se, om en værdi ikke er numerisk i Oracle?

  2. SQL Server Internals:Plan Caching Pt. II – Genkompilering af planer

  3. Hvordan man erklærer en variabel i en PostgreSQL-forespørgsel

  4. Opdater en kolonne i MySQL