Ú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