Ako efektívne pracovať s dátumami a časmi v MySQL

Ako efektívne pracovať s dátumami a časmi v MySQL

Dátumy a časy sú dôležité, pomáhajú udržiavať organizáciu a sú neoddeliteľnou súčasťou akejkoľvek prevádzky softvéru.





Efektívna práca s nimi v databáze môže niekedy pôsobiť mätúco, či už ide o prácu v rôznych časových pásmach, pridávanie / odčítanie dátumov a ďalšie operácie.





Naučte sa rôzne funkcie MySQL, ktoré sú k dispozícii na jednoduchú správu a správu dátumov / časov vo vašej databáze.





Práca s časovými pásmami

Aby ste zaistili štandardizáciu, mali by ste pracovať iba s dátumami / časmi v časovom pásme UTC. Zakaždým, keď vytvoríte pripojenie k databáze MySQL, mali by ste prepnúť časové pásmo na UTC, čo je možné vykonať pomocou nasledujúceho príkazu SQL:

SET TIME_ZONE = '+0:00'

Pretože všetky dátumy budú teraz uložené v UTC, budete vždy vedieť, s čím pracujete, a tak budú veci jednoduchšie a jednoduchšie.



pomôžte mi nájsť film, ktorý by som mohol sledovať

Keď je to potrebné, môžete ľahko previesť časové pásmo s ľubovoľnou hodnotou dátumu a času CONVERT_TZ () Funkcia MySQL. Najprv musíte poznať posun, napríklad PST na západnom pobreží Severnej Ameriky je UTC -08: 00, aby ste mohli použiť:

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

Výsledkom je 2021-02-04 13:47:23 čo je úplne správne. Tri argumenty prešli na CONVERT_TZ () sú najskôr dátum / časová pečiatka, s ktorou začínate (použite teraz () pre aktuálny čas), druhá bude vždy '+0: 00' pretože všetky dátumy sú v databáze nútené k UTC a posledný je posun, na ktorý chceme dátum previesť.





Sčítanie / odčítanie dátumov

Mnohokrát potrebujete pridať alebo ubrať na dátumoch, napríklad ak potrebujete načítať záznamy spred týždňa alebo naplánovať niečo o mesiac.

Našťastie MySQL má vynikajúce DATE_ADD () a DATE_SUB () funkcie, ktoré robia túto úlohu veľmi jednoduchou. Pomocou príkazu SQL môžete napríklad odpočítať dva týždne od aktuálneho dátumu:





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

Ak by ste namiesto toho chceli k existujúcej časovej pečiatke pridať tri dni, použili by ste:

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

Obe funkcie fungujú rovnako, prvý argument je časová pečiatka, s ktorou začínate, a druhý argument je interval na sčítanie alebo odčítanie. Druhý argument má vždy rovnaký formát začínajúci slovom interval nasleduje číselná hodnota a samotný interval, ktorý môže byť ľubovoľný z nasledujúcich: sekunda, minúta, hodina, deň, týždeň, mesiac, štvrťrok, rok.

V inom prípade, ak by ste chceli načítať všetky prihlásenia, ktoré sa vyskytli za posledných 34 minút, môžete použiť príkaz SQL, ako napríklad:

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

Ako vidíte, týmto by sa získali všetky záznamy z prihlásenie tabuľka s dátumom prihlásenia väčším ako je aktuálny čas mínus 45 minút, alebo inými slovami, posledných 45 minút.

Zistite rozdiel medzi dátumami

Niekedy musíte zistiť, koľko času uplynulo medzi dvoma dátumami. Počet dní medzi dvoma rôznymi dátumami môžete ľahko získať pomocou DATEDIFF funkcia, ako napríklad nasledujúci príkaz SQL:

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

The DATEDIFF funkcia preberá dva argumenty, z ktorých oba sú pečiatkami dátumu / času, a uvádza počet dní medzi nimi. Vyššie uvedený príklad bude zobrazovať počet dní, ktoré uplynuli od 15. decembra 2020 do dnešného dňa.

Ak chcete získať počet sekúnd medzi dvoma dátumami, TO_SECONDS () Funkcia sa môže hodiť napríklad:

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

Výsledkom bude počet sekúnd medzi dvoma poskytnutými dátumami.

Extrahujte segmenty z dátumov

Existujú rôzne funkcie MySQL, ktoré vám umožňujú ľahko extrahovať konkrétne segmenty z dátumov, ako keby ste chceli iba mesiac, deň v roku alebo hodinu. Tu je niekoľko príkladov takýchto funkcií:

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

Výsledkom vyššie uvedených príkazov SQL bude 02 , aktuálna hodina a 196 keďže 15. september je 196. deň v roku. Tu je zoznam všetkých dostupných funkcií extrakcie dátumu, z ktorých každá používa iba jeden argument, dátum extrahovania z:

- 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)

Ak ste napríklad chceli načítať iba mesiac a rok, kedy boli všetci používatelia vytvorení, môžete použiť príkaz SQL, ako napríklad:

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

Tým by sa získali všetky záznamy v rámci používateľov tabuľka a uveďte ID#, mesiac a rok, v ktorom bol každý používateľ vytvorený.

Zoskupovanie záznamov podľa dátumu

Jednou z vynikajúcich funkcií dátumu je možnosť zoskupiť záznamy podľa dátumu SKUPINA PODĽA v rámci vašich príkazov SQL. Môžete napríklad chcieť stiahnuť celkovú sumu všetkých objednávok v roku 2020 zoskupenú podľa mesiacov. Môžete použiť príkaz SQL, ako naprí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);

To by získalo všetky objednávky zadané v roku 2020, zoskupilo by ich podľa mesiaca, v ktorom boli vytvorené, a vrátilo by 12 záznamov zobrazujúcich celkovú sumu objednanú každý mesiac v roku.

Upozorňujeme, že pre lepší výkon indexu je vždy najlepšie vyhnúť sa používaniu funkcií dátumu, ako napríklad ROK () v klauzule WHERE príkazov SQL a namiesto toho použite príponu MEDZI MEZI operátor, ako je uvedené vo vyššie uvedenom príklade.

Už si nikdy viac nepleťte s dátumami

Pomocou vyššie uvedených znalostí môžete teraz efektívne pracovať s, prekladať a vykonávať operácie v dátumoch a časoch v širokej škále prípadov použitia.

Nezabudnite, že pri práci s dátumami kvôli jednoduchosti vždy používajte UTC a pomocou vyššie uvedených tipov efektívne spravujte dátumy vo svojom softvéri, či už ide o dokončovanie jednoduchých výpočtov alebo jednoduché sťahovanie zostáv zoskupených podľa dátumových období.

Ak ste v SQL trochu nováčik, prečítajte si ich nevyhnutné príkazy SQL pomôcť zlepšiť používanie SQL.

zdieľam zdieľam Tweet E -mail Ako vytvárať profesionálne správy a dokumenty v programe Microsoft Word

Táto príručka sa zameriava na prvky profesionálnej správy a kontroluje štruktúrovanie, štýl a finalizáciu dokumentu v programe Microsoft Word.

Čítajte ďalej
Súvisiace témy O autorovi Matt Dizak(18 článkov uverejnených) Viac od Matta Dizaka

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber