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

Hvordan TIME() virker i MariaDB

I MariaDB, TIME() er en indbygget dato- og klokkeslætsfunktion, der udtrækker tidsdelen fra et givet klokkeslæt eller datetime-udtryk og returnerer det som en streng.

Den accepterer ét argument, som er den tid eller dato/tidsværdi, som du vil udtrække tiden for.

Syntaks

Syntaksen ser sådan ud:

TIME(expr)

Hvor expr er klokkeslættet eller datetime-udtrykket, som klokkeslættet skal udtrækkes for.

Eksempel

Her er et eksempel til demonstration:

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

Resultat:

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

Tidsværdier

Her er et eksempel, der udtrækker tiden fra en tidsværdi:

SELECT TIME('10:30:45');

Resultat:

+------------------+
| TIME('10:30:45') |
+------------------+
| 10:30:45         |
+------------------+

Mikrosekunder

Her er et eksempel, der inkluderer mikrosekunder:

SELECT TIME('2030-02-01 10:30:45.123456');

Resultat:

+------------------------------------+
| TIME('2030-02-01 10:30:45.123456') |
+------------------------------------+
| 10:30:45.123456                    |
+------------------------------------+

Større timer

TIME værdier kan være i området '-838:59:59.999999' til '838:59:59.999999' .

Derfor kan timedelen være meget højere end 23 :

SELECT TIME('578:30:45');

Resultat:

+-------------------+
| TIME('578:30:45') |
+-------------------+
| 578:30:45         |
+-------------------+

Negative tidspunkter

Negative tider er gyldige:

Eksempel

SELECT TIME('-578:30:45');

Resultat:

+--------------------+
| TIME('-578:30:45') |
+--------------------+
| -578:30:45         |
+--------------------+

Uden for rækkevidde timer

Tidsværdier uden for området '-838:59:59.999999' til '838:59:59.999999' er afgrænset ved den relevante grænse og inkluderer en advarsel.

Eksempel:

SELECT TIME('978:30:45');

Resultat (ved hjælp af lodret output):

+-------------------+
| TIME('978:30:45') |
+-------------------+
| 838:59:59         |
+-------------------+
1 row in set, 1 warning (0.003 sec)

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat (ved hjælp af lodret output):

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '978:30:45' |
+---------+------+---------------------------------------------+

Aktuel dato

Vi kan sende NOW() som datetime-argument for at bruge det aktuelle klokkeslæt:

SELECT 
    NOW(),
    TIME(NOW());

Resultat:

+---------------------+-------------+
| NOW()               | TIME(NOW()) |
+---------------------+-------------+
| 2021-05-27 10:24:23 | 10:24:23    |
+---------------------+-------------+

Ugyldige argumenter

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

SELECT TIME('Ten Thirty AM');

Resultat:

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

Tjek advarslen:

SHOW WARNINGS;

Resultat:

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

Manglende argument

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

SELECT TIME();

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 TIME('10: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. Sammenligning af datoer i Oracle SQL

  2. DevOps-løsninger til automatisering af databaseudvikling

  3. Funktionsbaserede indekser i SQL Server

  4. Fremskynd bulkinsert-operationer med NHibernate