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

Hvordan TIMESTAMP() virker i MariaDB

I MariaDB, TIMESTAMP() er en indbygget dato- og klokkeslætsfunktion, der returnerer en datetime-værdi baseret på dens argument(er).

Det kan bruges med enten et argument eller to, som følger:

  • Når det bruges sammen med ét argument, returnerer det dato- eller datetime-udtrykket som en datetime-værdi.
  • Når det bruges med to argumenter, føjer det det andet (tids)-argument til det første (dato eller datetime) udtryk og returnerer derefter den resulterende datetime-værdi.

Syntaks

Det kan bruges på følgende to måder:

TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

Hvor expr1 er et dato- eller datetime-udtryk og expr2 er et tidsudtryk, der skal tilføjes til expr1 .

Eksempel

Her er et eksempel til demonstration:

SELECT TIMESTAMP('2030-02-01');

Resultat:

+-------------------------+
| TIMESTAMP('2030-02-01') |
+-------------------------+
| 2030-02-01 00:00:00     |
+-------------------------+

Dato-tidsværdier

Her er et eksempel på videregivelse af en datetime-værdi:

SELECT TIMESTAMP('2030-02-01 10:30:45');

Resultat:

+----------------------------------+
| TIMESTAMP('2030-02-01 10:30:45') |
+----------------------------------+
| 2030-02-01 10:30:45              |
+----------------------------------+

Andet argument

Her er et eksempel, der føjer det andet argument til det første:

SELECT TIMESTAMP('2030-02-01 10:30:45', '02:15:15');

Resultat:

+----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '02:15:15') |
+----------------------------------------------+
| 2030-02-01 12:46:00                          |
+----------------------------------------------+

Mikrosekunder

Her er et eksempel, der tilføjer mikrosekunder:

SELECT TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456');

Resultat:

+-----------------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456') |
+-----------------------------------------------------+
| 2030-02-01 10:30:45.123456                          |
+-----------------------------------------------------+

Negative tidspunkter

Negative tider er gyldige:

Eksempel:

SELECT TIMESTAMP('2030-02-01 10:30:45', '-09:20:00');

Resultat:

+-----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '-09:20:00') |
+-----------------------------------------------+
| 2030-02-01 01:10:45                           |
+-----------------------------------------------+

Aktuel dato

Vi kan sende NOW() som datetime-argument for at bruge den aktuelle dato og tid:

SELECT 
    NOW(),
    TIMESTAMP(NOW(), '10:30:45');

Resultat:

+---------------------+------------------------------+
| NOW()               | TIMESTAMP(NOW(), '10:30:45') |
+---------------------+------------------------------+
| 2021-05-28 09:25:09 | 2021-05-28 19:55:54          |
+---------------------+------------------------------+

Ugyldige argumenter

Når et ugyldigt argument sendes, TIMESTAMP() returnerer null med en advarsel:

SELECT TIMESTAMP('Ten Thirty AM');

Resultat:

+----------------------------+
| TIMESTAMP('Ten Thirty AM') |
+----------------------------+
| NULL                       |
+----------------------------+
1 row in set, 1 warning (0.004 sec)

Tjek advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Manglende argument

Kalder TIMESTAMP() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT TIMESTAMP();

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Og endnu et eksempel:

SELECT TIMESTAMP('2020-12-09', '06:30:45', '06:30:45');

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1

  1. Sådan viser du tabeldata mere tydeligt i oracle sqlplus

  2. Hvad er mere effektivt:Flere MySQL-tabeller eller et stort bord?

  3. Fix Msg 241 "Konvertering mislykkedes ved konvertering af dato og/eller tid fra tegnstreng" i SQL Server

  4. Sådan finder du duplikerede poster ved at bruge Group by og Having-klausulen i SQL Server - SQL Server / TSQL Tutorial Part 132