logo

Funkce data a času MySQL

Zacházení datum a čas data v MySQL jsou nezbytná pro mnoho databázových operací, zejména pokud jde o zpracování časových razítek, plánování úloh nebo generování na základě času. MySQL poskytuje řadu funkcí data a času, které uživatelům pomáhají pracovat s hodnotami data, provádět výpočty a formátovat je podle potřeby.

Tyto funkce umožňují vývojářům provádět výpočty extrahovat konkrétní části data nebo dokonce formátovat výstup pro lepší čitelnost. V tomto článku prozkoumáme nejběžněji používané funkce data MySQL, vysvětlíme jejich syntaxi, poskytneme příklady a provedeme vás, jak je efektivně používat.

Porozumění datovým typům data a času MySQL

Při práci s daty v MySQL to může být pro začátečníky složité zejména proto, že formát data v databázi musí odpovídat formátu vstupních dat při vkládání. V mnoha případech místo pouhého použití jednoduchého data možná budeme muset uložit jak datum, tak čas v závislosti na případu použití. Toto je místo DATETIME a TIMESTAMP do hry vstupují datové typy.



MySQL poskytuje následující datové typy pro ukládání hodnot data a času:

1. DATUM :

  • Formát :YYYY-MM-DD
  • Slouží k uložení pouze data (rok měsíc a den) bez časové složky.

2. DATETIME :

  • Formát :YYYY-MM-DD HH:MM:SS
  • Ukládá datum i čas, což je užitečné, když potřebujete zachytit konkrétní časy spolu s datem.

3. ČASOVÉ RAZÍTKO :

  • Formát :YYYY-MM-DD HH:MM:SS
  • Podobné jakoDATETIMEaleTIMESTAMPzahrnuje také podporu časového pásma. Automaticky se aktualizuje na aktuální časové razítko, když je záznam upraven, takže je ideální pro sledování změn záznamů v průběhu času.

4. ROK :

  • Formát :YYYYneboYY
  • Používá se pro uložení pouze roku, což může být užitečné pro aplikace, kde je potřeba pouze rok, jako je sledování roků narození nebo fiskálních let.

Funkce data a času MySQL

Nyní se pojďme ponořit do funkcí data MySQL, které můžete použít k efektivní manipulaci a dotazování na data a času.

1. NYNÍ()- Získat aktuální datum a čas

The TEĎ() funkce načte aktuální datum a čas YYYY-MM-DD HH:MI:SS formát.

Dotaz:

SELECT NOW();  

výstup:

nyní výstupní obrázek metody' title=

2. CURDATE() – získat pouze aktuální datum

Pokud potřebujeme pouze aktuální datum bez časové části, kterou můžeme použít CURDATE() který vrátí datum v YYYY-MM-DD formát.

Dotaz:

SELECT CURDATE();  

výstup: 

VÝSTUP2' loading='lazy' title=

3. CURTIME() – získat pouze aktuální čas

Funkce CURTIME() vrací aktuální čas v HH:MI:SS formát bez data.

Dotaz:

SELECT CURTIME();  

výstup: 

java indexof
VÝSTUP3' loading='lazy' title=

4. DATE() - Extrahuje část data z hodnoty DATETIME

TheDATE()funkce extrahuje pouze část data z aDATETIMEneboTIMESTAMPhodnotu zahodit čas.

Příklad: Pro stůl tzv users :

Id Jméno Čas narození
4120Praxe1996-09-26 16:44:15.581

Dotaz:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

výstup:

Jméno Datum narození
Praxe1996-09-26

5. EXTRACT() – Extrahovat části specifického data

EXTRACT()se používá k extrahování určitých částí data, jako je den, měsíc nebo rok. Tato funkce může být zvláště užitečná při analýze nebo porovnávání různých částí data. Lze uvažovat o několika jednotkách, ale pouze některé se používají jako např MIKROKRUHÁ DRUHÁ MINUTA HODINA DEN TÝDEN MĚSÍC ČTVRTLETNÍ ROK atd. A 'date' je platný výraz data.

Syntax:

EXTRACT(jednotka OD datum);

Den dotazu na extrahování:

životní cyklus sdlc
SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

výstup: 

Jméno Narozeniny
Praxe26

Rok pro extrakci dotazu:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

výstup: 

Jméno Rok narození
Praxe1996

Dotaz na extrahování sekund:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

výstup:

Jméno Druhé narození
Praxe581

6. DATE_ADD() – Přidání intervalů k datu

The DATE_ADD() Funkce umožňuje přidat časové intervaly (např. dny měsíce roky) k datu neboDATETIMEhodnota.

Syntax:

DATE_ADD(datum INTERVAL typ expr);

Příklad: Pro níže uvedenou tabulku s názvem ' Test '

Id Jméno Čas narození
4120Praxe1996-09-26 16:44:15.581

Dotaz na Přidejte 1 rok k datu

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

výstup:

Jméno BirthTimeModified
Praxe1997-09-26 16:44:15.581

Dotaz na přidání 30 dnů k datu

SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

výstup:

Jméno BirthDayModified
Praxe1996-10-26 16:44:15.581

Dotaz na přidání 4 hodin k datu

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

výstup: 

Jméno Druhé narození
Praxe1996-10-26 20:44:15.581

7. DATEDIFF() - Najděte rozdíl mezi dvěma daty

Tato funkce vrací počet dní mezi dvěma daty. 

Syntax:

DATEDIFF(intervaldatum1 datum2);

interval - minuta/hodina/měsíc/rok atd

datum1 a datum2 – výraz data/času

Dotaz na Najděte rozdíl mezi dvěma daty

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

výstup: 

DateDiff

8. DATE_FORMAT() – Formát data a času

DATE_FORMAT() nám umožňuje formátovat a DATUM DATETIME nebo ČASOVÉ RAZÍTKO hodnotu do vlastního formátu pomocí zástupných symbolů.

Syntax:

DATE_FORMAT(formát data);

datum je platné datum a formát určuje výstupní formát pro datum/čas. Formáty, které lze použít, jsou:

  • %a-Zkrácený název dne v týdnu (ne-so)
  • %b-Zkrácený název měsíce (leden–prosinec)
  • %c-měsíc numerický (0-12)
  • %D-den v měsíci s anglickou příponou (0. 1. 2. 3.)
  • %d-den v měsíci číselně (00-31)
  • %e-Day v měsíci numerické (0-31)
  • %f-mikrosekund (000000-999999)
  • %H hodin (00-23)
  • %h hodin (01-12)
  • %I-Hour (01-12)
  • %i-minuty numerické (00-59)
  • %j-den v roce (001-366)
  • %k-hodina (0-23)
  • %l hodina (1–12)
  • Název %M-měsíc (leden–prosinec)
  • %m-měsíc číselně (00-12)
  • %p-AM nebo PM
  • %r-Time 12 hodin (hh:mm: ss následované AM nebo PM)
  • %S-sekund (00-59)
  • %s-sekund (00-59)
  • %T-Time 24 hodin (hh:mm:ss)
  • %U-Week (00-53), kde neděle je první den v týdnu
  • %u-týden (00-53), kde pondělí je první den v týdnu
  • %V-týden (01-53), kde neděle je první den v týdnu používaný s %X
  • %v-týden (01-53), kde pondělí je první den v týdnu používaný s %x
  • %W-Název dne v týdnu (neděle–sobota)
  • %w-den v týdnu (0=neděle 6=sobota)
  • %X-Year pro týden, kde neděle je první den v týdnu, čtyři číslice používané s %V
  • %x-Year pro týden, kde pondělí je první den v týdnu, čtyři číslice používané s %v
  • %Y-rok číselné čtyři číslice
  • %y-rok číselné dvě číslice

Dotaz na formátování data

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

výstup:

slučovací třídicí algoritmus
Formátované_datum
Čtvrtek 10. dubna 2025

Nejlepší postupy pro práci s datem a časem v MySQL

1. Vždy používejte správné formáty data

Při vkládání nebo aktualizaci dat se ujistěte, že dodržujete očekávané formáty MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). To zajistí, že vaše dotazy vrátí očekávané výsledky bez chyb.

2. Úvahy o časovém pásmu s TIMESTAMP

ZatímcoDATETIMEneukládá informace o časovém pásmuTIMESTAMPdělá. Pokud je vaše aplikace citlivá na časové pásmo (například v mezinárodních aplikacích), zvažte použitíTIMESTAMPpro pole datum-čas, která potřebují zohlednit různá časová pásma.

3. Zpracování časových období v dotazech

Chcete-li filtrovat data na základě období (např. načíst všechny záznamy z určitého měsíce nebo roku), zajistěte, abyste vWHEREdoložka. Příklad:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Úvahy o výkonu

Při práci s funkcemi data a času, zejména ve velkých souborech dat, mějte na paměti dopad na výkon. Vyhněte se používání funkcí jakoNOW()neboCURDATE()vWHEREklauzule, protože mohou zpomalit dotazy při práci s velkými tabulkami.

Závěr

Funkce data a času MySQL jsou nezbytnými nástroji zacházení a manipulující dočasná data ve vašich databázích. Zvládnutím funkcí jakoNOW() CURDATE() DATE_ADD() DATEDIFF()aDATE_FORMAT()můžete snadno pracovat výpočty založené na čase srovnání a formátů . Klíčem k efektivnímu používání těchto funkcí je porozumět jejich syntaxi, kdy a jak je používat, a jejich dopadům na výkon ve velkých souborech dat. S těmito znalostmi budete moci vytvářet efektivnější přesné a škálovatelné dotazy pro všechny vaše potřeby související s datem a časem v MySQL.

Vytvořit kvíz