- 1 1. Úvod
- 2 2. MySQL funkce pro získání aktuálního data/času (srovnávací tabulka)
- 3 3. Podrobnosti funkce NOW()
- 4 4. Vlastnosti funkce SYSDATE()
- 5 5. CURTIME() a CURRENT_TIME()
- 5.1 5.1 Co je CURTIME()?
- 5.2 5.2 Co je CURRENT_TIME()?
- 5.3 5.3 CURTIME() vs CURRENT_TIME() (srovnání)
- 5.4 5.4 Praktické příklady CURTIME() / CURRENT_TIME()
- 5.5 5.5 Omezení a poznámky k CURTIME() / CURRENT_TIME()
- 5.6 5.6 Kdy byste měli použít CURTIME() / CURRENT_TIME()?
- 5.7 5.7 Shrnutí CURTIME() / CURRENT_TIME()
- 6 6. Praktické příklady dotazů používající aktuální čas
- 6.1 6.1 Zaznamenat aktuální čas při vkládání dat
- 6.2 6.2 Zaznamenat aktuální čas při aktualizaci dat
- 6.3 6.3 Získat data z minulých N dnů
- 6.4 6.4 Získat data vytvořená v určitém časovém rozsahu
- 6.5 6.5 Získat aktuální čas s ohledem na časová pásma
- 6.6 6.6 Nastavit čas vytvoření záznamu na aktuální časové razítko jako výchozí
- 6.7 6.7 Smazat data po uplynutí určité doby
- 6.8 6.8 Získat aktuální čas s přesností na milisekundy (mikrosekundy)
- 6.9 6.9 Průvodce výběrem použití
- 6.10 6.10 Shrnutí
- 7 7. FAQ (Často kladené otázky)
- 7.1 7.1 Jaký je rozdíl mezi NOW() a SYSDATE()?
- 7.2 7.2 Jsou CURRENT_TIMESTAMP() a NOW() stejné?
- 7.3 7.3 Jak získám aktuální čas v určité časové zóně?
- 7.4 7.4 Jak mohu automaticky zaznamenat aktuální čas?
- 7.5 7.5 Jak získám data z minulých N dní?
- 7.6 7.6 Jak získám aktuální čas s přesností na milisekundy (mikrosekundy)?
- 7.7 7.7 Shrnutí
- 8 8. Shrnutí
1. Úvod
Získání aktuálního času v MySQL je klíčovou součástí správy databáze.
Například můžete potřebovat získat aktuální čas v následujících situacích:
- Automatické zaznamenání časové značky vytvoření při vkládání dat (např. časová značka, když se nový uživatel zaregistruje)
- Zaznamenávání časů přihlášení uživatelů (např. správa historie přihlášení)
- Načítání dat v určitém časovém rozmezí (např. získání historie objednávek za posledních 24 hodin)
- Zaznamenávání systémových spouštěcích logů (např. správa chybových a událostních logů)
Jak vidíte, správné získání „aktuálního času“ pro správu dat a logování je nezbytné pro provoz databáze.
V tomto článku podrobně vysvětlíme jak získat aktuální čas v MySQL pomocí reálných SQL dotazů.
Také se podíváme na rozdíly mezi často používanými funkcemi, jak vybrat tu správnou a praktické příklady dotazů — užitečné pro začátečníky i středně pokročilé uživatele.
2. MySQL funkce pro získání aktuálního data/času (srovnávací tabulka)
MySQL poskytuje několik funkcí pro získání aktuálního času.
Vybrat správnou funkci pro váš případ použití je důležité, ale mnoho lidí považuje rozdíly za matoucí.
V této sekci porovnáme hlavní funkce používané k získání aktuálního data/času v MySQL a podrobně vysvětlíme jejich charakteristiky.
2.1 Srovnávací tabulka MySQL časových funkcí
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most commonly used |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Unlike NOW(), it can change on each execution |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone is fixed to UTC |
Z tabulky výše většina funkcí vrací buď „aktuální datum a čas“, nebo „aktuální čas“, ale nejlepší funkce závisí na vašem účelu.
2.2 Přehled a charakteristiky jednotlivých funkcí
Funkce NOW()
- Nejčastější funkce pro získání aktuálního data a času
- Vrací čas v okamžiku, kdy se spustí SQL příkaz
- Často používána pro časové značky při vkládání nebo aktualizaci dat
SELECT NOW();
Příklad výstupu
2025-02-14 15:30:45
Funkce SYSDATE()
- Získá aktuální čas v okamžiku vykonání
- Na rozdíl od NOW() může SYSDATE() vrátit jinou hodnotu při každém vyhodnocení (může se měnit i během transakce)
SELECT SYSDATE();
Příklad výstupu
2025-02-14 15:30:47
Funkce CURTIME()
- Získá pouze čas (HH:MM:SS)
- Užitečné, když datum není potřeba
SELECT CURTIME();
Příklad výstupu
15:30:45
Funkce CURRENT_TIME()
- Funguje stejně jako CURTIME()
- Název funkce vyhovuje SQL standardu
SELECT CURRENT_TIME();
Příklad výstupu
15:30:45
Funkce CURRENT_TIMESTAMP()
- Chová se jako NOW()
- Může být specifikována jako výchozí hodnota sloupce
DEFAULT(často vhodnější nežNOW()pro výchozí hodnoty)SELECT CURRENT_TIMESTAMP();
Příklad výstupu
2025-02-14 15:30:45
Nastavit jako výchozí hodnotu při vytváření tabulky:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Funkce UTC_TIMESTAMP()
- Získá aktuální UTC (Koordinovaný světový čas)
- Nezávisí na časovém pásmu serveru, což umožňuje konzistentní časové značky
SELECT UTC_TIMESTAMP();
Příklad výstupu
2025-02-14 06:30:45
2.3 Kterou funkci byste měli použít?
| Use case | Recommended function |
|---|---|
| Get the current date and time | NOW() |
| Get a different timestamp each time within a transaction | SYSDATE() |
| Need only the current time (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Set as a table default value | CURRENT_TIMESTAMP() |
| Get UTC time | UTC_TIMESTAMP() |
Obecně, pro typické získávání data/času je NOW() obvykle správnou volbou.
Nicméně výběr nejlepší funkce pro váš případ použití umožňuje flexibilnější a spolehlivější operace s daty.
3. Podrobnosti funkce NOW()
Funkce MySQL NOW() je nejčastěji používanou funkcí pro získání aktuálního data a času (datum + čas).
Je široce používána pro ukládání časových značek v databázi a načítání dat v konkrétních časových intervalech.
3.1 Základní použití funkce NOW()
Syntaxe funkce NOW()
SELECT NOW();
Příklad výstupu
2025-02-14 15:30:45
- Formát výstupu je
YYYY-MM-DD HH:MM:SS(rok-měsíc-den hodina:minuta:sekunda). - Čas je získáván na základě výchozího nastavení časové zóny MySQL.
3.2 Běžné případy použití NOW()
① Zaznamenat aktuální čas při vkládání dat
Při vkládání dat do databáze můžete použít NOW(), abyste zaznamenali čas vytvoření.
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
② Zaznamenat aktuální čas při aktualizaci dat
UPDATE users SET last_login = NOW() WHERE id = 1;
③ Načíst data z určitého časového období
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
- Zadáním
INTERVAL 1 DAYmůžete získat „data z posledního 1 dne“.
3.3 Návratový typ a jak změnit formát výstupu
Návratový typ funkce NOW()
- Typ
DATETIME(YYYY-MM-DD HH:MM:SS) - Může být také považován za řetězec
SELECT NOW(), typeof(NOW());
Jak změnit formát
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Příklad výstupu
2025-02-14 15:30:45
3.4 Rozdíly mezi NOW() a SYSDATE()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Can return different timestamps within the same statement |
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Příklad výstupu
NOW() | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48
🚨 Pokud pracujete s transakcemi, doporučuje se NOW() pro konzistenci.
3.5 Omezení a poznámky k funkci NOW()
① Závisí na časové zóně
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
② Pro výchozí hodnoty tabulky použijte CURRENT_TIMESTAMP
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 Shrnutí funkce NOW()
NOW()je nejčastější funkce pro získání aktuálního data a času v MySQL.- Lze ji použít pro vkládání, aktualizace i načítání časově podmíněných dat.
- Použijte
NOW(), když potřebujete konzistentní časové razítko v rámci transakce. SYSDATE()vrací jiný čas při každém vyhodnocení, takže ji použijte, když potřebujete přesný čas provedení.- Použijte
CONVERT_TZ(), abyste získali čas v jiné časové zóně.
📌 Závěr: Ve většině případů je NOW() nejlepší volbou pro získání aktuálního data a času v MySQL.

4. Vlastnosti funkce SYSDATE()
Funkce SYSDATE() je další způsob, jak získat aktuální datum a čas v MySQL, ale chová se odlišně od NOW().
V této sekci vysvětlíme základní použití SYSDATE(), jak se liší od NOW() a důležité poznámky.
4.1 Co je SYSDATE()?
SYSDATE() je funkce, která vrací čas při vykonání příkazu.
Na rozdíl od NOW() vrací jiný časový údaj při každém vyhodnocení.
Syntaxe SYSDATE()
SELECT SYSDATE();
Příklad výstupu
2025-02-14 16:00:45
- Vráceno ve formátu
YYYY-MM-DD HH:MM:SS - Reprezentuje okamžik, kdy je dotaz proveden
4.2 Rozdíly mezi SYSDATE() a NOW()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp each time |
Porovnání chování: NOW() vs SYSDATE()
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Příklad výstupu
NOW() | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48
📌 Klíčové body
NOW()uchovává časové razítko od začátku příkazu, takže se nemění.SYSDATE()vrací jiný časový údaj při každém vyhodnocení, takže se po 3 sekundách změní.
🚨 Používejte NOW() pro zpracování transakcí
- Protože
SYSDATE()se může chovat odlišně odNOW()v vícevláknových prostředích,NOW()je obecně doporučováno pro konzistenci transakcí.
4.3 Příklady použití SYSDATE()
① Zaznamenejte aktuální čas při vkládání dat
INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());
② Zaznamenejte aktuální čas při aktualizaci dat
UPDATE users SET last_login = SYSDATE() WHERE id = 1;
③ Získejte aktuální čas v konkrétním formátu
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Ukázkový výstup
2025-02-14 16:05:30
4.4 Omezení a poznámky k SYSDATE()
① Chování v transakcích
NOW()uchovává časové razítko od začátku příkazu, takže jej lze v transakci použít konzistentně.SYSDATE()vrací jiné časové razítko při každém volání, takže v transakci může dojít k posunu času.
② Nelze použít jako výchozí hodnotu
SYSDATE()nelze nastavit jako výchozí hodnotu sloupce tabulkyDEFAULT.
✅ Řešení: Použijte DEFAULT CURRENT_TIMESTAMP.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.5 Kdy byste měli použít SYSDATE()?
| Use case | Recommended function |
|---|---|
| Typical current timestamp retrieval | NOW() |
| Use a consistent timestamp within a transaction | NOW() |
| Need the exact execution time | SYSDATE() |
🚀 SYSDATE() je vhodné pro logování v reálném čase, ale není ideální pro zpracování transakcí.
4.6 Shrnutí SYSDATE()
- SYSDATE() získává časové razítko v okamžiku provedení, na rozdíl od
NOW(). - Protože může při každém volání vracet různé hodnoty, je užitečné pro logování v reálném čase.
- Pro transakční konzistenci se doporučuje
NOW(). - Pro výchozí hodnoty použijte
CURRENT_TIMESTAMP.
📌 Závěr: Pro obecné získávání časových razítek je nejlepší NOW(); pro přesné časy provedení zvolte SYSDATE().
5. CURTIME() a CURRENT_TIME()
Když chcete v MySQL získat aktuální čas, používají se CURTIME() a CURRENT_TIME(), pokud potřebujete pouze čas (HH:MM:SS).
V této sekci vysvětlíme základní použití, rozdíly a praktické příklady pro každou z nich.
5.1 Co je CURTIME()?
CURTIME() je funkce, která získává aktuální čas (hodina, minuta, sekunda) v MySQL.
Její hlavní vlastností je, že neobsahuje datum – vrací pouze část času.
Syntaxe CURTIME()
SELECT CURTIME();
Ukázkový výstup
16:30:45
- Formát:
HH:MM:SS - Závisí na nastavení časové zóny serveru
- Na rozdíl od
NOW()je vhodné, když nepotřebujete datum
5.2 Co je CURRENT_TIME()?
CURRENT_TIME(), podobně jako CURTIME(), je funkce, která získává aktuální čas (HH:MM:SS).
V praxi se chová naprosto stejně jako CURTIME().
Syntaxe CURRENT_TIME()
SELECT CURRENT_TIME();
Ukázkový výstup
16:30:45
📌 Jaký je rozdíl?
CURTIME()je specifické pro MySQLCURRENT_TIME()je standard SQL- Chovají se stejně
- Zvolte podle preference čitelnosti (žádný rozdíl ve výkonu)
5.3 CURTIME() vs CURRENT_TIME() (srovnání)
| Function | What it returns | Format | Notes |
|---|---|---|---|
| CURTIME() | Current time (hour/minute/second) | HH:MM:SS | MySQL-specific function |
| CURRENT_TIME() | Current time (hour/minute/second) | HH:MM:SS | SQL-standard function |
5.4 Praktické příklady CURTIME() / CURRENT_TIME()
① Zaznamenejte aktuální čas při vkládání dat
INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());
② Filtrování (získání dat v konkrétním časovém rozmezí)
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
③ Změna přesnosti (zahrnutí milisekund)
SELECT CURTIME(3); -- Display up to 3 fractional digits
Ukázkový výstup
16:30:45.123
5.5 Omezení a poznámky k CURTIME() / CURRENT_TIME()
① Žádná informace o datu, takže v případě potřeby kombinujte s datem
SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;
② Při použití jako výchozí hodnota
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIME DEFAULT CURTIME()
);
5.6 Kdy byste měli použít CURTIME() / CURRENT_TIME()?
| Use case | Recommended function |
|---|---|
| Need only the current time (hour/minute/second) | CURTIME() or CURRENT_TIME() |
| Need current date and time | NOW() |
| Need millisecond precision | CURTIME(3) |
📌 Ve většině případů funguje buď CURTIME() nebo CURRENT_TIME() dobře.
Vyberte ten, který vám připadá čitelnější.
5.7 Shrnutí CURTIME() / CURRENT_TIME()
CURTIME()je specifické pro MySQL;CURRENT_TIME()je standard SQL- Oba získávají aktuální čas (HH:MM:SS)
- Použijte
CURTIME(3)neboDATE_FORMAT()k úpravě formátování/přesnosti - Pokud potřebujete datum, zkombinujte s
CURDATE()nebo použijteNOW() - Pro výchozí hodnoty se běžně používá
CURRENT_TIMESTAMP
📌 Závěr: Pokud potřebujete pouze aktuální čas, CURTIME() je solidní volba.
6. Praktické příklady dotazů používající aktuální čas
Teď, když rozumíte, jak získat aktuální čas v MySQL, podívejme se na praktické způsoby jeho použití.
V této sekci představíme příklady reálných dotazů používajících aktuální čas.
Naučíte se techniky užitečné pro každodenní úkoly databáze, jako jsou vložení, aktualizace a vyhledávání.
6.1 Zaznamenat aktuální čas při vkládání dat
① Zaznamenat aktuální čas při registraci uživatele
INSERT INTO users (name, email, created_at)
VALUES ('Sato', 'sato@example.com', NOW());
6.2 Zaznamenat aktuální čas při aktualizaci dat
② Zaznamenat časové razítko posledního přihlášení uživatele
UPDATE users SET last_login = NOW() WHERE id = 1;
6.3 Získat data z minulých N dnů
③ Získat data objednávek z minulých 7 dnů
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
6.4 Získat data vytvořená v určitém časovém rozsahu
④ Získat data vytvořená dnes mezi 9:00 a 18:00
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
6.5 Získat aktuální čas s ohledem na časová pásma
⑤ Převést UTC čas na japonský čas (JST)
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
6.6 Nastavit čas vytvoření záznamu na aktuální časové razítko jako výchozí
⑥ Automaticky nastavit created_at na aktuální časové razítko
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6.7 Smazat data po uplynutí určité doby
⑦ Smazat data starší 30 dnů
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
6.8 Získat aktuální čas s přesností na milisekundy (mikrosekundy)
⑧ Získat aktuální časové razítko s přesností na milisekundy
SELECT NOW(3);
Příklad výstupu
2025-02-14 16:30:45.123
6.9 Průvodce výběrem použití
| Use case | Recommended function | Example |
|---|---|---|
| Record the current time when inserting data | NOW() | INSERT INTO users (name, created_at) VALUES ('Sato', NOW()); |
| Record the current time when updating data | NOW() | UPDATE users SET last_login = NOW() WHERE id = 1; |
| Retrieve data from the past N days | NOW() - INTERVAL X DAY | SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY; |
| Retrieve data within a specific time range | CURTIME() | SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00'; |
| Convert UTC time to JST | CONVERT_TZ() | SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'); |
| Delete old data (older than 30 days) | NOW() - INTERVAL X DAY | DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY; |
6.10 Shrnutí
NOW()zpracovává základní získávání aktuálního časového razítkaCURTIME()aCURRENT_TIME()jsou užitečné, když potřebujete pouze čas- Aktuální čas můžete použít pro dotazy s časovým oknem, filtrování podle času dne a časová razítka s přesností na milisekundy
- Protože časová razítka závisí na časových pásmech, použijte
CONVERT_TZ()k získání správného času - Pro správu velikosti databáze je důležité navrhnout mechanismus pro automatické mazání starých dat
📌 Závěr: Efektivní použití aktuálního času vám pomůže lépe spravovat data v MySQL.
7. FAQ (Často kladené otázky)
Zde jsou často kladené otázky (FAQ) o tom, jak získat aktuální čas v MySQL.
Každá otázka je zodpovězena jasně a stručně.
7.1 Jaký je rozdíl mezi NOW() a SYSDATE()?
Odpověď
Oba NOW() a SYSDATE() získávají aktuální datum a čas, ale liší se v tom, kdy je hodnota vyhodnocena.
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp on each evaluation |
Příklad testu
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Příklad výstupu
NOW() | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48
🚨 Pro zpracování transakcí je obecně doporučeno NOW().
7.2 Jsou CURRENT_TIMESTAMP() a NOW() stejné?
Odpověď
Chovají se téměř stejně, ale CURRENT_TIMESTAMP() lze použít jako výchozí hodnotu.
Příklad při vytváření tabulky
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.3 Jak získám aktuální čas v určité časové zóně?
Odpověď
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
7.4 Jak mohu automaticky zaznamenat aktuální čas?
Odpověď
Při vytváření tabulky specifikujte DEFAULT CURRENT_TIMESTAMP, aby se automaticky uložil aktuální čas do created_at.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.5 Jak získám data z minulých N dní?
Odpověď
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
7.6 Jak získám aktuální čas s přesností na milisekundy (mikrosekundy)?
Odpověď
SELECT NOW(3);
Příklad výstupu
2025-02-14 16:30:45.123
7.7 Shrnutí
NOW()aSYSDATE()se liší v čase vyhodnoceníCURRENT_TIMESTAMP()lze použít jakoDEFAULThodnotu- Použijte
CONVERT_TZ()k získání časových razítek v jiných časových zónách - Použijte
DEFAULT CURRENT_TIMESTAMPk automatickému záznamu časových razítek vytvoření - Použijte
NOW() - INTERVAL X DAYk získání dat z minulých X dní NOW(3)neboNOW(6)podporuje časová razítka s přesností na milisekundy/mikrosekundy
📌 Závěr: Volba správné funkce MySQL pro čas je nezbytná pro práci s aktuálními časovými razítky.
8. Shrnutí
V tomto článku jsme vysvětlili, jak získat aktuální čas v MySQL.
S důrazem na funkci NOW() jsme pokrývali rozdíly mezi podobnými funkcemi, praktické příklady dotazů a důležité poznámky.
8.1 Hlavní funkce MySQL pro získání aktuálního času
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most common function |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Can return different values on each evaluation |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone fixed to UTC |
📌 Závěr:
- Pro obecné získání aktuálního časového razítka je
NOW()obvykle nejlepší . - Pokud potřebujete přesný čas provedení, použijte
SYSDATE(). - Pokud potřebujete pouze čas (bez data), zvolte
CURTIME().
8.2 Praktické dotazy používající aktuální čas
Zaznamenat aktuální čas při vkládání dat
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Zaznamenat aktuální čas při aktualizaci dat
UPDATE users SET last_login = NOW() WHERE id = 1;
Získat data z minulých 7 dní
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Získat čas s ohledem na časové zóny
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Smazat stará data (starší 30 dní)
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
8.3 Poznámky k časovým zónám
- MySQL
NOW()závisí na výchozím nastavení časové zóny, takže výsledky se mohou lišit napříč prostředími. - Použijte
CONVERT_TZ()k získání časových razítek v jiné časové zóně. - Pokud chcete změnit časovou zónu serveru:
SET GLOBAL time_zone = 'Asia/Tokyo';
8.4 FAQ o funkcích MySQL pro aktuální čas
Otázka 1. Jaký je rozdíl mezi NOW() a SYSDATE()?
➡ NOW() získává čas na začátku dotazu, zatímco SYSDATE() získává čas při provedení.
Otázka 2. Jsou CURRENT_TIMESTAMP() a NOW() stejné?
➡ Jsou téměř stejné, ale CURRENT_TIMESTAMP() lze použít jako výchozí hodnotu.
Otázka 3. Jak získám aktuální čas s přesností na milisekundy (mikrosekundy)?
➡ Použijte NOW(3) (milisekundy) nebo NOW(6) (mikrosekundy).
SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123
8.5 Shrnutí
- V MySQL je důležité vybrat správnou funkci pro aktuální čas .
- Použijte
NOW()pro typické případy aSYSDATE()když potřebujete přesné časové razítko vykonání . - Použijte
CURTIME()jen pro čas aCONVERT_TZ()pro převod časových pásem . - Můžete použít aktuální čas při vkládání, aktualizaci, vyhledávání i mazání .
📌 Závěr: Ovládněte časové funkce MySQL a spravujte data efektivněji.


