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