Poniżej znajdują się 4 funkcje, które umożliwiają zwrócenie części mikrosekundowej z wartości czasu w MariaDB.
MICROSECOND()
Funkcja
MICROSECOND()
funkcja zwraca mikrosekundową część podanego TIME
lub DATETIME
wyrażenie. Przyjmuje jeden argument, czyli czas, z którego chcesz wyodrębnić mikrosekundy.
Przykład:
SELECT MICROSECOND('10:45:30.123456');
Wynik:
+--------------------------------+ | MICROSECOND('10:45:30.123456') | +--------------------------------+ | 123456 | +--------------------------------+
TIME
wartości mogą należeć do zakresu '-838:59:59.999999'
do '838:59:59.999999'
.
TIME
wartości mogą być również ujemne. W takich przypadkach MICROSECOND()
zwraca wartość dodatnią.
Oto ujemna wartość czasu z częścią w mikrosekundach:
SELECT MICROSECOND('-838:59:59.999999');
Wynik:
+----------------------------------+ | MICROSECOND('-838:59:59.999999') | +----------------------------------+ | 999999 | +----------------------------------+
Część mikrosekundowa jest wyodrębniana zgodnie z oczekiwaniami.
EXTRACT()
Funkcja
EXTRACT()
funkcja pozwala na wyodrębnienie określonej jednostki z wartości daty/czasu. Dlatego możesz go użyć do wyodrębnienia mikrosekund (jak również innych jednostek) z wartości czasu.
Przykład:
SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456');
Wynik:
+---------------------------------------------+ | EXTRACT(MICROSECOND FROM '10:45:30.123456') | +---------------------------------------------+ | 123456 | +---------------------------------------------+
TIME_FORMAT()
Funkcja
TIME_FORMAT()
funkcja pozwala sformatować wartość czasu na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania czasu.
Możesz zatem użyć tej funkcji, aby zwrócić mikrosekundy (a także godziny, minuty i sekundy) z czasu.
%f
specyfikator formatu zwraca mikrosekundy:
SELECT TIME_FORMAT('10:07:30.003456', '%f');
Wynik:
+--------------------------------------+ | TIME_FORMAT('10:07:30.003456', '%f') | +--------------------------------------+ | 003456 | +--------------------------------------+
Możesz także użyć $s
lub $S
specyfikator formatu do zwrócenia drugiej części:
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";
Wynik:
+---------+--------------+-----------+ | Seconds | Microseconds | Both | +---------+--------------+-----------+ | 30 | 123456 | 30.123456 | +---------+--------------+-----------+
TIME_FORMAT()
funkcja akceptuje podzbiór ciągów formatujących, które mogą być używane z DATE_FORMAT()
funkcjonować. Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów, których można używać z DATE_FORMAT()
. TIME_FORMAT()
funkcja akceptuje tylko specyfikatory formatu dla godzin, minut i sekund/subsekund. Każdy inny specyfikator formatu daje wynik null
lub 0
zostanie zwrócony.
DATE_FORMAT()
Funkcja
DATE_FORMAT()
Funkcja umożliwia sformatowanie wartości daty lub daty i godziny na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania daty/godziny.
Dlatego możemy użyć tych samych specyfikatorów formatu, których użyliśmy w funkcji TIME_FORMAT()
funkcji w poprzednim przykładzie. Jednak DATE_FORMAT()
nie akceptuje TIME
wartość, więc będziemy musieli przekazać DATETIME
wartość.
SELECT DATE_FORMAT('2023-01-01 10:07:30.007123', '%f');
Wynik:
+-------------------------------------------------+ | DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') | +-------------------------------------------------+ | 007123 | +-------------------------------------------------+
Mija tylko TIME
wartość nie działa z tą funkcją:
SELECT DATE_FORMAT('10:07:30.007123', '%f');
Wynik:
+--------------------------------------+ | DATE_FORMAT('10:07:30.007123', '%f') | +--------------------------------------+ | NULL | +--------------------------------------+ 1 row in set, 1 warning (0.003 sec)
Zobaczmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Incorrect datetime value: '10:07:30.007123' | +---------+------+---------------------------------------------+