Úvod
MySQL přichází s mnoha vestavěnými funkcemi, které vám umožňují manipulovat s daty. Tyto funkce jsou seskupeny do kategorií – datové funkce, řetězcové funkce, matematické funkce a další.
Funkce data vám poskytují řadu možností, jak upravit, vypočítat a převést výrazy data, času a data a času v MySQL.
V tomto tutoriálu se na praktických příkladech seznámíte s funkcemi data a času MySQL a jak fungují.
Funkce související s datem
AKTUÁLNÍ NEBO CURRENT_DATE
Vraťte aktuální datum ve formátu „RRRR-MM-DD“ nebo „RRRRMMDD“ s CURDATE NEBO CURRENT_DATE příkaz.
Základní syntaxe:
CURDATE(); Pokud například spustíte:
SELECT CURDATE(); MySQL odpoví aktuálním datem ve formátu:
2021-01-17 DATUM
Vraťte datum z výrazu datetime pomocí DATE příkaz.
Základní syntaxe:
DATE(datetime); Pokud například spustíte:
SELECT DATE('2021-01-17 10:12:16'); Výstup je:
2021-01-17 DATE_ADD nebo ADDDATE
Přidejte hodnotu času a data do výrazu data pomocí DATE_ADD nebo ADDDATE funkce.
Základní syntaxe:
DATE_ADD(date, INTERVAL value unit); Nahraďte datum s výrazem data, ke kterému chcete přidat čas/datum. hodnotová jednotka je čas/datum, které chcete přidat. Musí být vyjádřena číselnou hodnotou spolu s jednotkou hodnoty.
Jednotka může být:
- DRUHÁ
- MINUTE
- HODINA
- DEN
- WEEK
- MĚSÍC
- ČTVRTLETÍ
- ROK
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
Pokud například spustíte:
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE); Výstup vrátí výsledek:
2021-01-17 07:34:21 DATE_FORMAT
Naformátujte datum pomocí DATE_FORMAT .
Základní syntaxe:
DATE_FORMAT(date, format); datum je výraz data, který chcete přeformátovat, zatímco formát je kombinací následujících specifikátorů:
Pokud například spustíte:
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y'); Výstup zobrazí výsledek:
Sunday January 2021 DATE_SUB nebo SUBDATE
Odečtěte hodnotu času a data od výrazu data pomocí DATE_SUB nebo SUBDATE funkce.
Základní syntaxe:
DATE_SUB(date, INTERVAL value unit); Nahraďte datum s výrazem data, od kterého chcete odečíst. hodnotová jednotka je čas/datum, které chcete odečíst. Musí být vyjádřen v číselné hodnotě spolu s jednotkou hodnoty.
Najděte seznam typů jednotek v sekci DATE_ADD.
Pokud například spustíte:
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR); Výstup vrátí výsledek:
2021-01-17 06:14:21 DATEDIFF
Vrátí počet dní mezi dvěma výrazy data pomocí DATEDIFF funkce.
Základní syntaxe:
DATEDIFF(date1,date2); Například:
SELECT DATEDIFF('2021-01-23','2021-01-14'); Vrátí výsledek:
9 EXTRAKTOVAT
Chcete-li extrahovat část výrazu datum/datum a čas, použijte EXTRACT funkce.
Základní syntaxe:
EXTRACT(unit FROM date); V příkazu je potřeba určit, jakou jednotku chcete extrahovat ze zadaného data .
V popisu DATE_ADD vyhledejte seznam jednotek, které můžete použít.
Například, když spustíte:
SELECT EXTRACT(DAY FROM '2021-01-26'); Dostanete výsledek:
26 GET_FORMAT
Vrátí formátovací řetězec (kombinaci specifikátorů), jak je uvedeno v argumentu s GET_FORMAT . Tato funkce se často používá s DATE_FORMAT .
Základní syntaxe:
GET_FORMAT(DATE/TIME/DATETIME,format) Tuto funkci použijte s výrazy datum, čas a datum a čas.
formát může být:
- „EUR“
- „USA“
- „JIS“
- „ISO“
- „INTERNÍ“
Pomocí GET_FORMAT můžete získat konečný počet výsledků funkce. Níže naleznete seznam všech volání funkcí a jejich výsledků.
Funkci můžete například zkombinovat s DATE_FORMAT , jako v následujícím příkladu:
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR')); Kde je výsledek:
26.01.2021 MAKEDATE
Vrátí výraz data ze zadaného roku a dne v roce pomocí MAKEDATE funkce.
Základní syntaxe:
MAKEDATE(year,day); Pokud například spustíte:
SELECT MAKEDATE(2021,34); Výstup ukazuje výsledek:
2021-02-03 STR_TO_DATE
Naformátujte datum z řetězce pomocí STR_TO_DATE a vrátí hodnotu data/datetime.
Základní syntaxe:
STR_TO_DATE(string, format); řetězec je to, co chcete přeformátovat, zatímco formát je kombinací specifikátorů, které popisují každý prvek řetězce .
Seznam specifikátorů a jejich význam naleznete v sekci DATE_FORMAT.
Pokud například spustíte:
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y'); Výstup zobrazuje:
2021-01-25 SYSDATE
Chcete-li vrátit aktuální datum a čas ve formátu „RRRR-MM-DD hh:mm:ss“ nebo „RRRRMMDDHHMMSS.uuuuuu“, použijte SYSDATE funkce.
Základní syntaxe:
SYSDATE();
Můžete přidat fsp argument pro zahrnutí zlomkové sekundové přesnosti (0-6). V takovém případě je syntaxe SYSDATE(fsp); .
Příkaz zobrazený níže:
SELECT SYSDATE(); V tuto chvíli dává výsledek:
2021-01-25 20:21:04 UTC_DATE
Vrátí aktuální hodnotu data koordinovaného světového času (UTC) ve formátu „RRRR-MM-DD“ nebo „RRRRMMDD“ s UTC_DATE funkce.
Základní syntaxe:
UTC_DATE(); Například spuštěním následujícího příkazu:
SELECT UTC_DATE(); Vrátí aktuální datum, které je:
2021-01-25 Funkce související s časem
PŘIDAT ČAS
Přidejte časový interval k zadanému výrazu čas/datum a čas pomocí ADDTIME .
Základní syntaxe:
ADDTIME(datetime, timevalue) Pokud například spustíte:
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006'); Dostanete výsledek:
2021-01-25 11:27:43.000027 CONVERT_TZ
Převeďte výraz čas/datum a čas z jednoho časového pásma do druhého pomocí ADDTIME funkce.
Základní syntaxe:
CONVERT_TZ(datetime, from_timezone,to_timezone) Například, když spustíte:
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00'); MySQL převede zadané datum a čas na časové pásmo +10:00:
2021-01-25 20:12:00 CURTIME nebo CURRENT_TIME
Vraťte aktuální čas pomocí CURTIME nebo CURRENT_TIME funkce. Výsledek vrátí čas ve formátu „hh:mm:ss“ nebo „hhmmss“.
Základní syntaxe:
CURTIME();
Můžete zahrnout zlomkovou sekundovou přesnost (od 0 do 6) přidáním fsp argument.
Například následující příkaz zobrazuje aktuální čas s přesností na tři zlomky sekund:
CURTIME(3); Výstup odpoví výsledkem:
15:19:07.340 HODINA
Vraťte hodinu zadaného času/datumčas pomocí HOUR funkce.
Základní syntaxe:
HOUR(datetime); Pokud například spustíte:
SELECT HOUR('08:40:07'); Výsledek je:
8 MAKETIME
Vrátí časový výraz ze zadaných hodnot hodin, minut a sekund pomocí MAKETIME funkce.
Základní syntaxe:
MAKETIME(hour, minute, second); Můžete například spustit:
SELECT MAKETIME(09,25,00); Kde se výstup zobrazí:
09:25:00 MIKROSECOND
Vraťte mikrosekundy zadaného výrazu čas/datum a čas pomocí MICROSECOND .
Základní syntaxe:
MICROSECOND(datetime); Můžete například spustit:
SELECT MICROSECOND('2021-01-21 10:23:44.000040'); Kde je výsledek:
40 MINUTE
Vraťte minuty zadaného výrazu čas/datum a čas pomocí MINUTE funkce.
Základní syntaxe:
MINUTE(datetime); Pokud například spustíte příkaz:
SELECT MINUTE('10:23:44'); Výsledek je:
23 SEC_TO_TIME
Vrátí časovou hodnotu ze zadané sekundové hodnoty s SEC_TO_TIME funkce.
Základní syntaxe:
SEC_TO_TIME(seconds); Pokud například spustíte příkaz:
SELECT SEC_TO_TIME(8897); Výstup je:
02:28:17 SUBTIME
Odečtěte hodnotu času od výrazu time/datetime pomocí SUBTIME funkce.
Základní syntaxe:
SUBTIME(datetime,timevalue); Například, když spustíte:
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1'); Výstup je:
2021-01-21 19:03:59 ČAS
Chcete-li vrátit hodnotu času z výrazu datetime, použijte TIME funkce.
Základní syntaxe:
TIME(datetime); Například:
SELECT TIME('2021-01-22 13:38:10'); Dává výsledek:
13:38:10 TIME_FORMAT
Naformátujte hodnotu času do zadaného formátu pomocí TIME_FORMAT .
Základní syntaxe:
TIME_FORMAT(time,format); formát je kombinací specifikátorů. Seznam všech specifikátorů a jejich význam naleznete v popisu funkce DATE_FORMAT.
Například spuštěním:
SELECT TIME_FORMAT('13:45:10','%h %i %s %p'); Získáte výstup:
01 45 10 PM TIME_TO_SEC
Chcete-li vrátit hodnotu času převedenou na sekundy, použijte TIME_TO_SEC .
Základní syntaxe:
TIME_TO_SEC(timevalue); Například, když spustíte:
SELECT TIME_TO_SEC('13:48:05'); Výsledek je:
49685 ČASOVÝ ROZDÍL
Vypočítejte rozdíl mezi dvěma výrazy čas/datum a čas pomocí TIMEDIFF funkce. V tomto případě je výsledek vždy v časové hodnotě.
Základní syntaxe:
TIMEDIFF(datetime1,datetime2); Například, když spustíte:
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16'); Výstup vrátí:
240:00:01 TO_SECONDS
Chcete-li převést výraz datum/datum a čas na sekundy, použijte funkci TO_SECONDS . Výsledkem je počet sekund mezi 0 a zadaným datem/datem a časem.
Základní syntaxe:
TO_SECONDS(datetime); Pokud například spustíte příkaz:
SELECT TO_SECONDS('2021-01-21 08:10:17'); Výsledek je:
63778435817 UTC_TIME
Vraťte aktuální hodnotu času UTC pomocí UTC_TIME . Vrací hodnotu času ve formátu „HH:MM:SS“ nebo „HHMMSS“.
Základní syntaxe:
UTC_TIME(); Pokud například spustíte:
SELECT UTC_TIME(); V tomto okamžiku dostanete výsledek:
19:45:21 Funkce související s časovým razítkem
CURRENT_TIMESTAMP nebo LOCALTIMESTAMP
Chcete-li vrátit aktuální datum a čas, použijte CURRENT_TIMESTAMP nebo LOCALTIMESTAMP . Výsledek se vrátí ve formátu „RRRR-MM-DD HH-MM-SS“ nebo „RRRRMMDDHHMMSS.uuuuuu“.
Základní syntaxe:
CURRENT_TIMESTAMP(); Například spuštěním:
SELECT CURRENT_TIMESTAMP(); Aktuální výsledek je:
2021-01-25 19:53:55 FROM_UNIXTIME
Vrátí výraz datum/datum a čas z časového razítka ve formátu Unix s FROM_UNIXTIME .
Základní syntaxe:
FROM_UNIXTIME(unix_timestamp); Pokud příkaz spustíte bez argumentu určujícího formát, vrátí výsledek ve formátu „RRRR-MM-DD hh:mm:ss“ nebo „RRRRMMDDhhmmss“.
Pokud například spustíte:
SELECT FROM_UNIXTIME(1611231404); Dostanete výsledek:
2021-01-21 12:16:44 TIMESTAMP
Chcete-li vrátit výraz datetime z hodnoty data nebo datetime, použijte funkci TIMESTAMP . Pokud přidáte dva argumenty, výstup vrátí součet argumentů.
Základní syntaxe:
TIMESTAMP(datetime); TIMESTAMP(datetime,time); Například, když spustíte příkaz:
SELECT TIMESTAMP('2021-01-13','30:50:00'); Výstup ukazuje výsledek:
2021-01-14 06:50:00 TIMESTAMPADD
Přidejte hodnotu času k výrazu datum/datum a čas pomocí TIMESTAMPADD funkce.
Základní syntaxe:
TIMESTAMPADD(unit,value,datetime); Jednotka může být:
- FRAC_SECOND
- DRUHÁ
- MINUTE
- HODINA
- DEN
- WEEK
- MĚSÍC
- ČTVRTLETÍ
- ROK
Například následující příkaz přidá k určenému datu 3 dny:
SELECT TIMESTAMPADD(DAY,3,'2021-01-18'); Proto výstup zobrazuje:
2021-01-21 TIMESTAMPDIFF
Chcete-li vypočítat rozdíl mezi dvěma výrazy datum/datum a čas, použijte TIMESTAMPDIFF . Funkce odečte jednu hodnotu data a času od druhé v zadané jednotce.
Základní syntaxe:
TIMESTAMPDIFF(unit,datetime1,datetime2); Můžete najít seznam s různými typy jednotek, podívejte se na seznam v sekci výše.
Můžete například vypočítat rozdíl mezi následujícími dvěma daty ve dnech:
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18'); Kde je výsledek:
13 UNIX_TIMESTAMP
Vraťte unixové časové razítko z výrazu datum/datum a čas pomocí UNIX_TIMESTAMP funkce. Unixové časové razítko představuje sekundy mezi zadaným datem a časem „1970-01-01 00:00:00“ UTC.
Základní syntaxe:
UNIX_TIMESTAMP(datetime); Například spuštěním následujícího příkazu:
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00'); Dává výsledek:
1611595980 UTC_TIMESTAMP
Vraťte aktuální hodnotu data a času UTC pomocí UTC_TIMESTAMP . Vrací hodnotu data a času ve formátu „RRRR-MM-DD HH:MM:SS“ nebo „RRRRMMDDHHMMSS.uuuuuu“.
Základní syntaxe:
UTC_TIMESTAMP(datetime); Například příkaz:
SELECT UTC_TIMESTAMP(); Vrátí výstup ve stejném formátu jako níže:
2021-01-25 23:18:06 Funkce související se dnem/týdnem/měsícem/rokem
DEN
Vrátí den v měsíci ze zadaného výrazu datum/datum a čas pomocí DAY funkce.
Základní syntaxe:
DAY(datetime); Pokud spustíte příkaz níže:
SELECT DAY('2021-01-26 12:32:00'); Výstup vrátí výsledek:
26 DAYNAME
Vraťte název dne v týdnu ze zadaného výrazu datum/datum a čas pomocí DAYNAME funkce.
Základní syntaxe:
DAYNAME(datetime); Například, když spustíte příkaz:
SELECT DAYNAME('2021-01-26 12:32:00'); MySQL odpoví výsledkem:
Tuesday DAYOFMONTH
Vrátí den v měsíci ze zadaného výrazu datum/datum a čas pomocí DAYOFMONTH .
Základní syntaxe:
DAYOFMONTH(datetime); Například, když spustíte příkaz:
SELECT DAYOFMONTH('2021-01-26 12:32:00'); MySQL odpoví výsledkem:
26 DAYOFWEEK
Vraťte den v týdnu v číselné hodnotě ze zadaného výrazu datum/datum a čas pomocí DAYOFWEEK .
Základní syntaxe:
DAYOFWEEK(datetime); Spuštění příkazu níže:
SELECT DAYOFWEEK('2021-01-26 12:32:00'); Dává odpověď:
3 DAYOFYEAR
Vraťte den v roce ze zadaného výrazu datum/datum a čas pomocí funkce DAYOFYEAR .
Základní syntaxe:
DAYOFYEAR(datetime); Například, když spustíte příkaz:
SELECT DAYOFYEAR('2021-02-26 12:32:00'); Výstup dává výsledek:
57 FROM_DAYS
Vrátí výraz data z číselného vyjádření dne pomocí funkce FROM_DAYS .
Základní syntaxe:
FROM_DAYS(number); Například běh:
SELECT FROM_DAYS(738181); Výzva MySQL odpoví výsledkem:
2021-01-26 POSLEDNÍ_DEN
Vraťte poslední den v měsíci od zadaného data/datu a času pomocí LAST_DAY funkce.
Základní syntaxe:
LAST_DAY(date); Pokud například spustíte následující příkaz:
SELECT LAST_DAY('2021-01-26'); Výstup odpovídá:
31 MĚSÍC
Vraťte měsíc (v číselné hodnotě) ze zadaného data/datu a času pomocí MONTH funkce.
Základní syntaxe:
MONTH(date); Například, když spustíte:
SELECT MONTH('2021-01-26'); MySQL odpoví:
1 MONTHNAME
Vraťte název měsíce ze zadaného data/datu a času pomocí MONTHNAME funkce.
Základní syntaxe:
MONTHNAME(date); Pokud spustíte příkaz:
SELECT MONTH('2021-01-26'); Obdržíte následující odpověď:
January PERIOD_ADD
Chcete-li k období přidat zadaný počet měsíců, použijte PERIOD_ADD funkce.
Základní syntaxe:
PERIOD_ADD(period,number); období je definováno ve formátu RRMM nebo RRRRMM, zatímco číslo je počet měsíců, které chcete přidat.
Například:
SELECT PERIOD_ADD(202101, 5); Dává výsledek:
202106 PERIOD_DIFF
Vraťte počet měsíců mezi dvěma obdobími pomocí PERIOD_DIFF .
Základní syntaxe:
PERIOD_DIFF(period1,period2); Každé období by měl být ve formátu RRMM nebo RRRRMM.
Například:
SELECT PERIOD_DIFF(202101, 202003); Výsledkem je:
10 ČTVRTLETÍ
Chcete-li vrátit čtvrt roku od zadaného data/času, použijte funkci QUARTER .
Základní syntaxe:
QUARTER(date); Například spuštěním příkazu:
SELECT QUARTER('2021-01-26'); Výstup odpovídá:
1 DO_DAYS
Převeďte výraz datum/datum a čas na číselnou reprezentaci dne pomocí TO_DAYS .
Základní syntaxe:
TO_DAYS(datetime); Například pro příkaz:
SELECT TO_DAYS('2021-01-26'); Výsledek je:
738181 WEEK
Chcete-li vrátit číslo týdne od zadaného data, použijte funkci WEEK .
Základní syntaxe:
WEEK(date);
Můžete také zahrnout režim argument, v takovém případě je syntaxe WEEK(date,mode); .
Argument mode určuje, kterým dnem týden začíná. Pokud neexistuje žádný argument, použije 0 ve výchozím režimu.
Následující tabulka popisuje každý režim:
Pokud například spustíte:
SELECT WEEK('2021-01-26'); Výstup odpovídá:
4 WEEKDAY
Vraťte den v týdnu od zadaného data v číselné hodnotě pomocí WEEKDAY . Každé číslo představuje jeden ze dnů v týdnu – pondělí je 0 , úterý je 1 , a tak dále.
Základní syntaxe:
WEEKDAY(date); Například spuštěním následujícího příkazu:
SELECT WEEKDAY('2021-01-26'); Dává odpověď:
1 WEEKOFYEAR
Chcete-li vrátit číslo týdne v roce, použijte WEEKDAY funkce.
Základní syntaxe:
WEEKOFYEAR(date); Například, když spustíte příkaz:
SELECT WEEKOFYEAR('2021-01-26'); Výstup ukazuje výsledek:
3 ROK
Vraťte rok od zadaného data pomocí YEAR funkce.
Základní syntaxe:
YEAR(date); Pokud spustíte následující příkaz:
SELECT YEAR('2021-01-26'); Dostanete výsledek:
2021 YEARWEEK
Vraťte rok a číslo týdne od zadaného data pomocí YEARWEEK funkce.
Základní syntaxe:
YEARWEEK(date);
Můžete přidat mode argument k základní syntaxi k určení dne, od kterého týden začíná. Chcete-li zobrazit seznam režimů a jejich význam, podívejte se do tabulky v WEEK funkce.
Například, když spustíte příkaz:
SELECT YEARWEEK('2021-01-26'); Na výstupu se zobrazí:
202104