Níže jsou uvedeny 4 funkce, které vám umožňují vrátit část sekund z časové hodnoty v MariaDB.
SECOND()
Funkce
SECOND()
funkce vrací sekundovou část daného TIME
nebo DATETIME
výraz. Přijímá jeden argument, což je čas, ze kterého chcete extrahovat sekundy.
Příklad:
SELECT SECOND('03:45:30');
Výsledek:
+--------------------+ | SECOND('03:45:30') | +--------------------+ | 30 | +--------------------+
TIME
hodnoty mohou být v rozsahu '-838:59:59.999999'
na '838:59:59.999999'
. To zahrnuje mikrosekundy, ale SECOND()
vrátí pouze sekundovou část (je zde MICROSECOND()
funkce pro vracení mikrosekund).
TIME
hodnoty mohou být i záporné. V takových případech SECOND()
vrátí kladnou hodnotu.
Zde je záporná časová hodnota s částí v mikrosekundách:
SELECT SECOND('-838:59:59.999999');
Výsledek:
+-----------------------------+ | SECOND('-838:59:59.999999') | +-----------------------------+ | 59 | +-----------------------------+
Sekundová čá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 extrahování sekund (stejně jako jiných jednotek) z časové hodnoty.
Příklad:
SELECT EXTRACT(SECOND FROM '10:47:01');
Výsledek:
+---------------------------------+ | EXTRACT(SECOND FROM '10:47:01') | +---------------------------------+ | 1 | +---------------------------------+
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í sekund (stejně jako minut a hodin) od času.
%s
a %S
oba specifikátory formátu vracejí sekundy se dvěma číslicemi:
SELECT
TIME_FORMAT('10:07:30', '%s'),
TIME_FORMAT('10:07:30', '%S');
Výsledek:
+-------------------------------+-------------------------------+ | TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') | +-------------------------------+-------------------------------+ | 30 | 30 | +-------------------------------+-------------------------------+
Můžete také použít $f
specifikátor formátu pro vrácení šestimístných dílčích sekund:
SELECT
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";
Výsledek:
+--------------+-----------+ | Microseconds | Both | +--------------+-----------+ | 123456 | 30.123456 | +--------------+-----------+
TIME_FORMAT()
funkce přijímá podmnožinu formátovacích řetězců, které lze použít s DATE_FORMAT()
funkce. Úplný seznam formátovacích řetězců/specifikátorů, které lze použít s DATE_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ásledek null
nebo 0
se 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á TIME
hodnotu, takže budeme muset předat DATETIME
hodnotu.
SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');
Výsledek:
+------------------------------------------+ | DATE_FORMAT('2023-01-01 10:07:30', '%s') | +------------------------------------------+ | 30 | +------------------------------------------+
Předání jen TIME
value s touto funkcí nefunguje:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';
Výsledek:
+------+ | %s | +------+ | 00 | +------+