Kako učinkovito raditi s datumima i vremenima u MySQL -u

Kako učinkovito raditi s datumima i vremenima u MySQL -u

Datumi i vremena su važni, pomažu u održavanju organiziranosti i sastavni su dio svakog rada softvera.





Učinkovit rad s njima unutar baze podataka ponekad se može činiti zbunjujućim, bilo da se radi o različitim vremenskim zonama, dodavanju / oduzimanju datuma i drugim operacijama.





Naučite različite dostupne MySQL funkcije za jednostavno rukovanje datumima / vremenima i upravljanje njima u vašoj bazi podataka.



Rad s vremenskim zonama

Kako bi stvari bile standardizirane, uvijek biste trebali raditi s datumima / vremenom u UTC vremenskoj zoni. Svaki put kada uspostavite vezu s MySQL bazom podataka, trebate promijeniti vremensku zonu na UTC, što se može učiniti sa sljedećom SQL naredbom:

SET TIME_ZONE = '+0:00'

Budući da će svi datumi biti spremljeni u UTC -u, uvijek znate s čime radite, što pojednostavljuje stvari i čini ih jednostavnima.



kako vratiti igre na ps4

Po potrebi možete jednostavno pretvoriti vremensku zonu bilo koje vrijednosti datuma / vremenske oznake pri ruci CONVERT_TZ () MySQL funkcija. Morate prvo znati pomak, na primjer, PST na zapadnoj obali Sjeverne Amerike je UTC -08: 00, pa biste mogli koristiti:

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

To rezultira u 2021-02-04 13:47:23 što je točno točno. Tri argumenta su prešla na CONVERT_TZ () su prvi datum / vrijeme s kojim započinjete (koristite sada () za trenutno vrijeme), drugi će uvijek biti '+0: 00' budući da su svi datumi prisiljeni na UTC u bazi podataka, a posljednji je pomak u koji želimo pretvoriti datum.





Zbrajanje / oduzimanje datuma

Mnogo puta morate zbrajati ili oduzimati datume, na primjer ako trebate dohvatiti zapise od prije tjedan dana ili zakazati nešto za mjesec dana.

Srećom, MySQL ima izvrsne rezultate DATE_ADD () i DATE_SUB () funkcije koje ovaj zadatak čine iznimno lakim. Na primjer, pomoću SQL izraza možete oduzeti dva tjedna od trenutnog datuma:





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

Ako umjesto toga želite dodati tri dana postojećoj vremenskoj oznaci, upotrijebili biste:

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

Obje funkcije rade isto, prvi argument je vremenska oznaka s kojom započinjete, a drugi argument je interval za zbrajanje ili oduzimanje. Drugi argument uvijek je formatiran na isti način počevši od riječi interval slijedi numerička vrijednost i sam interval, koji može biti bilo što od sljedećeg: druga, minuta, sat, dan, tjedan, mjesec, tromjesečje, godina.

Na primjer, ako želite dohvatiti sve prijave koje su se dogodile u posljednje 34 minute, možete upotrijebiti SQL izraz, poput:

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

Kao što vidite, ovo bi dohvatilo sve zapise iz prijave tablica s datumom prijave većim od trenutnog vremena minus 45 minuta ili drugim riječima, zadnjih 45 minuta.

Dobijte razliku između datuma

Ponekad morate saznati koliko je vremena proteklo između dva datuma. Pomoću. Lako možete dobiti broj dana između dva različita datuma DATIFIRANO funkciju, kao što je donja SQL naredba:

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

The DATIFIRANO funkcija uzima dva argumenta, oba su datumske / vremenske oznake i daje broj dana između njih. Gornji primjer pokazat će broj dana proteklih od 15. prosinca 2020. do danas.

Da biste dobili broj sekundi između dva datuma, TO_SECONDS () funkcija može dobro doći, na primjer:

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

To će rezultirati brojem sekundi između dva navedena datuma.

Izdvoji segmente iz datuma

Postoje razne MySQL funkcije koje vam omogućuju jednostavno izdvajanje određenih segmenata iz datuma, na primjer ako želite samo mjesec, dan u godini ili sat. Evo nekoliko primjera takvih funkcija:

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

Gore navedeni SQL izrazi rezultirali bi 02 , trenutni sat i 196 budući da je 15. rujna 196. dan u godini. Evo popisa svih dostupnih funkcija izdvajanja datuma, od kojih svaka uzima samo jedan argument, a datum se izdvaja iz:

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

Na primjer, ako ste možda samo htjeli dohvatiti mjesec i godinu u kojoj su svi korisnici stvoreni, možete upotrijebiti SQL izraz poput:

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

Time bi se dohvatili svi zapisi unutar korisnika tablicu i prikazati id#, mjesec i godinu u kojoj je svaki korisnik stvoren.

Grupiranje zapisa prema datumskom razdoblju

Jedna izvrsna upotreba funkcija datuma je mogućnost grupiranja zapisa prema datumskom razdoblju pomoću GRUPA PO unutar vaših SQL izraza. Na primjer, možda želite povući ukupni iznos svih narudžbi u 2020. grupiran po mjesecima. Možete koristiti SQL izraz poput:

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

Time će se dohvatiti sve narudžbe poslane u 2020. godini, grupirati ih prema mjesecu nastanka i vratiti 12 zapisa koji pokazuju ukupni naručeni iznos svakog mjeseca u godini.

Imajte na umu da je za bolje performanse indeksa uvijek najbolje izbjegavati korištenje funkcija datuma, kao što su GODINA() unutar klauzule WHERE SQL naredbi, a umjesto toga koristite IZMEĐU operatora kako je prikazano u gornjem primjeru.

Nikad više nemojte biti zbunjeni datumima

Koristeći gornje znanje, sada možete učinkovito raditi, prevoditi i izvršavati operacije u datumima i vremenima u širokom nizu slučajeva upotrebe.

Ne zaboravite uvijek koristiti UTC pri radu s datumima radi jednostavnosti i koristite gore navedene savjete za učinkovito upravljanje datumima u vašem softveru, bilo da se radi o jednostavnim izračunima ili jednostavnom izvlačenju izvješća grupiranih po datumskim razdobljima.

Ako ste donekle novi u SQL -u, provjerite ove bitne SQL naredbe kako biste poboljšali upotrebu SQL -a.

Udio Udio Cvrkut E -pošta Kako stvoriti profesionalna izvješća i dokumente u programu Microsoft Word

Ovaj vodič ispituje elemente profesionalnog izvješća i pregledava strukturiranje, oblikovanje i dovršavanje vašeg dokumenta u programu Microsoft Word.

Pročitajte Dalje
Povezane teme O autoru Matt Dizak(18 objavljenih članaka) Više od Matta Dizaka

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu