sql >> Databasteknik >  >> RDS >> MariaDB

Hur TIMESTAMP() fungerar i MariaDB

I MariaDB, TIMESTAMP() är en inbyggd datum- och tidsfunktion som returnerar ett datetime-värde baserat på dess argument/er.

Den kan användas med antingen ett argument eller två, enligt följande:

  • När det används med ett argument returnerar det datumet eller datetime-uttrycket som ett datetime-värde.
  • När den används med två argument lägger den till det andra (tids)-argumentet till det första (datum eller datetime) uttrycket och returnerar sedan det resulterande datetime-värdet.

Syntax

Den kan användas på följande två sätt:

TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

Där expr1 är ett datum- eller datetime-uttryck och expr2 är ett tidsuttryck att lägga till i expr1 .

Exempel

Här är ett exempel att visa:

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

Resultat:

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

Datetime-värden

Här är ett exempel på hur du skickar ett datetime-värde:

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

Resultat:

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

Andra argumentet

Här är ett exempel som lägger till det andra argumentet till det första:

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

Här är ett exempel som lägger till 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                          |
+-----------------------------------------------------+

Negativa tider

Negativa tider är giltiga:

Exempel:

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                           |
+-----------------------------------------------+

Aktuellt datum

Vi kan skicka NOW() som datetime-argument för att använda aktuellt datum och 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          |
+---------------------+------------------------------+

Ogiltiga argument

När ett ogiltigt argument skickades, TIMESTAMP() returnerar null med en varning:

SELECT TIMESTAMP('Ten Thirty AM');

Resultat:

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

Kontrollera varningen:

SHOW WARNINGS;

Resultat:

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

Argument saknas

Anropar TIMESTAMP() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

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

Och ett annat exempel:

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. 2 sätt att ta bort dubbletter av rader i Oracle

  2. Returnerar flera tabeller från en lagrad procedur

  3. Ta bort alla dubbletter av rader utom en i MySQL?

  4. Lägg till ny RAC-instans manuellt