Níže jsou uvedeny 4 funkce, které vám umožňují vrátit část mikrosekund z časové hodnoty v MariaDB.
MICROSECOND() Funkce
MICROSECOND() funkce vrací mikrosekundovou část daného TIME nebo DATETIME výraz. Přijímá jeden argument, což je čas, ze kterého chcete extrahovat mikrosekundy.
Příklad:
SELECT MICROSECOND('10:45:30.123456'); Výsledek:
+--------------------------------+| MICROSECOND('10:45:30.123456') |+--------------------------------+| 123456 |+--------------------------------+
TIME hodnoty mohou být v rozsahu '-838:59:59.999999' na '838:59:59.999999' .
TIME hodnoty mohou být i záporné. V takových případech MICROSECOND() vrátí kladnou hodnotu.
Zde je záporná časová hodnota s částí v mikrosekundách:
SELECT MICROSECOND('-838:59:59.999999'); Výsledek:
+----------------------------------+| MICROSECOND('-838:59:59.999999') |+----------------------------------+| 999999 |+----------------------------------+ Mikrosekundová část je extrahována podle očekávání.
EXTRACT() Funkce
EXTRACT() Funkce umožňuje extrahovat zadanou jednotku z hodnoty data/času. Proto jej můžete použít k extrakci mikrosekund (stejně jako jiných jednotek) z časové hodnoty.
Příklad:
SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456'); Výsledek:
+---------------------------------------------+ | EXTRAKT (MIKROKRUHÁ Z '10:45:30.123456') |+------------------------------------- ---------+| 123456 |+---------------------------------------------+
TIME_FORMAT()Funkce
TIME_FORMAT()Funkce umožňuje formátovat časovou hodnotu na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být formátován čas.Tuto funkci tedy můžete použít k vrácení mikrosekund (a také hodin, minut a sekund) z času.
%fspecifikátor formátu vrací mikrosekundy:SELECT TIME_FORMAT('10:07:30.003456', '%f');Výsledek:
+--------------------------------------+| TIME_FORMAT('10:07:30.003456', '%f') |+---------------------------------- -----+| 003456 |+--------------------------------------+Můžete také použít
$snebo$Sspecifikátor formátu pro návrat sekundové části:SELECT TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds", TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds", TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";Výsledek:
+---------+--------------+-----------+| Vteřiny | Mikrosekundy | Oba |+---------+--------------+-----------+| 30 | 123456 | 30,123456 |+---------+--------------+-----------+
TIME_FORMAT()funkce přijímá podmnožinu formátovacích řetězců, které lze použít sDATE_FORMAT()funkce. Úplný seznam formátovacích řetězců/specifikátorů, které lze použít sDATE_FORMAT(), najdete v části MariaDB Format Strings .TIME_FORMAT()funkce přijímá pouze specifikátory formátu pro hodiny, minuty a sekundy/subsekundy. Jakýkoli jiný specifikátor formátu má za následeknullnebo0se vrací.
DATE_FORMAT()Funkce
DATE_FORMAT()Funkce umožňuje formátovat hodnotu data nebo data a času na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být formátován datum/čas.Můžeme tedy použít stejné specifikátory formátu, které jsme použili u
TIME_FORMAT()funkce v předchozím příkladu. NicméněDATE_FORMAT()nepřijímáTIMEhodnotu, takže budeme muset předatDATETIMEhodnotu.SELECT DATE_FORMAT('2023-01-01 10:07:30.007123', '%f');Výsledek:
+---------------------------------------------- ---+| DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') |+----------------------------- ----------------------+| 007123 |+----------------------------------------------- --+Předání jen
TIMEvalue s touto funkcí nefunguje:SELECT DATE_FORMAT('10:07:30.007123', '%f');Výsledek:
+--------------------------------------+| DATE_FORMAT('10:07:30.007123', '%f') |+---------------------------------- -----+| NULL |+--------------------------------------+1 řádek v sadě, 1 varování ( 0,003 s)Podívejme se na varování:
SHOW WARNINGS;Výsledek:
+---------+------+----------------------------- -----------------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ ----------------+| Upozornění | 1292 | Nesprávná hodnota data a času:'10:07:30.007123' |+---------+------+-------------------- -------------------------+