Jak efektivně pracovat s daty a časy v MySQL

Jak efektivně pracovat s daty a časy v MySQL

Data a časy jsou důležité, pomáhají udržovat pořádek a jsou nedílnou součástí jakékoli softwarové operace.





Efektivní práce s nimi v databázi může někdy vypadat matoucí, ať už jde o práci v různých časových pásmech, sčítání / odčítání dat a další operace.





Naučte se různé funkce MySQL, které jsou k dispozici pro snadné zpracování a správu dat / časů ve vaší databázi.





Práce s časovými zónami

Abyste zajistili standardizaci věcí, měli byste vždy pracovat pouze s daty / časy v časovém pásmu UTC. Pokaždé, když vytvoříte připojení k databázi MySQL, měli byste přepnout časové pásmo na UTC, což lze provést pomocí následujícího příkazu SQL:

SET TIME_ZONE = '+0:00'

Vzhledem k tomu, že všechna data budou nyní uložena v UTC, vždy víte, s čím pracujete, takže jsou věci jednodušší a přímočařejší.



vytvoření zaváděcího USB z iso

V případě potřeby můžete snadno převést časové pásmo s jakoukoli hodnotou datetime / timestamp CONVERT_TZ () Funkce MySQL. Nejprve musíte znát ofset, například PST na západním pobřeží Severní Ameriky je UTC -08: 00, takže můžete použít:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

To má za následek 2021-02-04 13:47:23 což je přesně správné. Tři argumenty předány CONVERT_TZ () jsou nejprve datetime / timestamp, s nimiž začínáte (použijte now () pro aktuální čas), druhá bude vždy '+0: 00' protože všechna data jsou v databázi nucena k UTC a poslední je offset, na který chceme datum převést.





Přidat / Odečíst data

Mnohokrát potřebujete data přidat nebo od nich odečíst, například pokud potřebujete načíst záznamy z před týdnem nebo naplánovat něco za měsíc.

Naštěstí MySQL má vynikající DATE_ADD () a DATE_SUB () funkce, které tento úkol velmi usnadňují. Pomocí příkazu SQL můžete například odečíst dva týdny od aktuálního data:





SELECT DATE_SUB(now(), interval 2 week);

Pokud byste místo toho chtěli přidat tři dny k existujícímu časovému razítku, použili byste:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Obě funkce fungují stejně, první argument je časové razítko, se kterým začínáte, a druhý argument je interval pro sčítání nebo odčítání. Druhý argument je vždy formátován stejným počínaje slovem časový úsek následuje číselná hodnota a samotný interval, který může být kterýkoli z následujících: sekunda, minuta, hodina, den, týden, měsíc, čtvrtletí, rok.

Jiným příkladem je, že pokud chcete načíst všechna přihlášení, ke kterým došlo za posledních 34 minut, můžete použít příkaz SQL, jako například:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Jak vidíte, toto by načtalo všechny záznamy z přihlášení tabulka s datem přihlášení větším než aktuální čas minus 45 minut, nebo jinými slovy, posledních 45 minut.

Získejte rozdíl mezi daty

Někdy potřebujete zjistit, kolik času uplynulo mezi dvěma daty. Pomocí tlačítka můžete snadno zjistit počet dní mezi dvěma různými daty DATEDIFF funkce, jako je níže uvedený příkaz SQL:

SELECT DATEDIFF(now(), '2020-12-15');

The DATEDIFF funkce bere dva argumenty, oba jsou razítka data / času a udává počet dní mezi nimi. Výše uvedený příklad ukáže počet dní, které uplynuly od 15. prosince 2020 do dneška.

Chcete -li získat počet sekund mezi dvěma daty, TO_SECONDS () funkce se může hodit například:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Výsledkem bude počet sekund mezi dvěma poskytnutými daty.

Extrahujte segmenty z dat

Existují různé funkce MySQL, které vám umožňují snadno extrahovat konkrétní segmenty z dat, například kdybyste chtěli pouze měsíc, den v roce nebo hodinu. Zde je několik příkladů takových funkcí:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Výše uvedené příkazy SQL by vedly k 02 , aktuální hodina a 196 15. září je 196. den v roce. Zde je seznam všech dostupných funkcí extrakce data, z nichž každá má pouze jeden argument, z kterého se datum extrahuje:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Pokud jste například chtěli načíst pouze měsíc a rok, kdy byli vytvořeni všichni uživatelé, můžete použít příkaz SQL, jako například:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Tím se načtou všechny záznamy v uživatelé tabulka a zobrazit ID#, měsíc a rok, ve kterém byl každý uživatel vytvořen.

Seskupení záznamů podle data

Jedním z vynikajících využití funkcí data je schopnost seskupovat záznamy podle data pomocí SKUPINA VYTVOŘENÁ v rámci vašich příkazů SQL. Možná si například přejete vytáhnout celkovou částku všech objednávek v roce 2020 seskupených podle měsíců. Můžete použít příkaz SQL, jako například:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Tím se načtou všechny objednávky zadané v roce 2020, seskupí se podle měsíce, kdy byly vytvořeny, a vrátí 12 záznamů zobrazujících celkovou částku objednanou každý měsíc v roce.

Vezměte prosím na vědomí, že pro lepší výkon indexu je vždy nejlepší vyhnout se používání funkcí data, jako je ROK() v klauzuli WHERE příkazů SQL a místo toho použijte MEZI operátor, jak je uvedeno ve výše uvedeném příkladu.

Nenechte se znovu zmást s daty

Pomocí výše uvedených znalostí můžete nyní efektivně pracovat s překlady a provádět operace v datech a časech v široké škále případů použití.

Při práci s daty pro jednoduchost vždy používejte UTC a pomocí výše uvedených tipů efektivně spravujte data ve vašem softwaru, ať už jde o dokončení jednoduchých výpočtů nebo snadné stahování sestav seskupených podle období.

Pokud jste v SQL trochu noví, podívejte se na tyto základní příkazy SQL které vám pomohou zlepšit používání SQL.

Podíl Podíl tweet E-mailem Jak vytvářet profesionální zprávy a dokumenty v aplikaci Microsoft Word

Tato příručka zkoumá prvky profesionální zprávy a kontroluje strukturování, styling a finalizaci dokumentu v aplikaci Microsoft Word.

Číst dále
Související témata O autorovi Matt Dizak(18 článků zveřejněno) Více od Matta Dizaka

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru