Datumi un laiki ir svarīgi, tie palīdz kārtot lietas un ir neatņemams jebkuras programmatūras darbības aspekts.

Efektīva sadarbība ar viņiem datubāzē dažreiz var šķist mulsinoša, neatkarīgi no tā, vai tā darbojas dažādās laika joslās, pievienojot / atņemot datumus un citas darbības.

Uzziniet dažādas pieejamās MySQL funkcijas, lai viegli apstrādātu un pārvaldītu datumus / laikus datu bāzē.

Darbs ar laika joslām

Lai lietas būtu standartizētas, jums vajadzētu strādāt tikai ar datumiem / laikiem UTC laika joslā. Katru reizi, kad izveidojat savienojumu ar MySQL datu bāzi, laika josla jāpārslēdz uz UTC, ko var izdarīt ar šādu SQL priekšrakstu:

SET TIME_ZONE = '+0: 00'

Tā kā visi datumi tagad tiks saglabāti UTC, jūs vienmēr zināt, ar ko strādājat, padarot lietas vienkāršākas un vienkāršākas.

Ja nepieciešams, jūs varat viegli konvertēt laika joslu jebkura datuma / laika zīmoga vērtības ar ērtu CONVERT_TZ () MySQL funkcija. Vispirms jums jāzina nobīde, piemēram, Ziemeļamerikas rietumu krastā PST ir UTC -08: 00, lai jūs varētu izmantot:

instagram viewer
PolyTime ir labākā laika joslu pārveidošanas lietotne vairākām pilsētām vienlaikus

PolyTime, jauna MakeUseOf lietotne, ļauj ērti salīdzināt laika joslas visā pasaulē. Lūk, ko jūs varat darīt ar to un kā tas darbojas.

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

Tā rezultātā 2021-02-04 13:47:23 kas ir tieši pareizi. Trīs argumenti nodoti CONVERT_TZ () vispirms ir datuma / laika zīmogs, ar kuru sākat (pašreizējam laikam izmantojiet tagad ()), otrais vienmēr būs '+0:00' tā kā visi datumi datu bāzē tiek piespiesti UTC, un pēdējais ir nobīde, uz kuru mēs vēlamies datumu konvertēt.

Saskaitīšanas / atņemšanas datumi

Daudzas reizes jums jāpievieno vai jāatņem datumi, piemēram, ja jums ir jāizgūst ieraksti no nedēļas iepriekš, vai ieplāno kaut ko mēnesi no šī brīža.

Par laimi MySQL ir lielisks DATE_ADD () un DATE_SUB () funkcijas, kas šo uzdevumu padara ārkārtīgi vieglu. Piemēram, ar pašreizējo datumu var atņemt divas nedēļas ar SQL priekšrakstu:

SELECT DATE_SUB (tagad (), intervāls 2 nedēļas);

Ja tā vietā jūs vēlaties pievienot trīs dienas esošajam laika zīmogam, izmantojiet:

SELECT DATE_ADD ('2021-02-07 11:52:06', intervāls 3 dienas);

Abas funkcijas darbojas vienādi, pirmais arguments ir laika zīmogs, ar kuru sākat, un otrais arguments ir pievienošanas vai atņemšanas intervāls. Otrais arguments vienmēr ir formatēts vienādi, sākot ar vārdu intervāls kam seko skaitliskā vērtība un pats intervāls, kas var būt jebkurš no šiem: sekunde, minūte, stunda, diena, nedēļa, mēnesis, ceturksnis, gads.

Citā piemērā, ja vēlaties izgūt visus pieteikumvārdus, kas radušies pēdējo 34 minūšu laikā, varat izmantot šādu SQL priekšrakstu:

SELECT * FROM logins WHERE login_date> = DATE_SUB (tagad (), intervāls 45 minūtes);

Kā redzat, tas izgūtu visus ierakstus no pieteikšanās tabula ar pieteikšanās datumu, kas ir lielāks par pašreizējo laiku, atņemot 45 minūtes vai, citiem vārdiem sakot, pēdējās 45 minūtes.

Iegūstiet atšķirību starp datumiem

Dažreiz jums jāsaņem laiks, kas pagājis starp diviem datumiem. Izmantojot programmu, viegli varat uzzināt dienu skaitu starp diviem dažādiem datumiem DATEDIFF funkcija, piemēram, zemāk esošais SQL priekšraksts:

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

The DATEDIFF Funkcijai nepieciešami divi argumenti, no kuriem abi ir datuma / laika zīmogi, un norāda dienu skaitu starp tiem. Iepriekš minētajā piemērā tiks parādīts dienu skaits, kas pagājis no 2020. gada 15. decembra līdz šodienai.

Lai iegūtu sekunžu skaitu starp diviem datumiem, TO_SECONDS () funkcija var būt noderīga, piemēram:

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

Tas radīs sekunžu skaitu starp diviem norādītajiem datumiem.

Izvilkt segmentus no datumiem

Ir dažādas MySQL funkcijas, kas ļauj viegli iegūt konkrētus segmentus no datumiem, piemēram, ja vēlaties tikai mēnesi, gada dienu vai stundu. Šeit ir daži šādu funkciju piemēri:

IZVĒLES MĒNESIS ('2021-02-11 15:27:52');
SELECT HOUR (tagad ());
SELECT DAYOFYEAR ('2021-07-15 12:00:00');

Iepriekš minēto SQL priekšrakstu rezultātā 02, pašreizējā stunda un 196 tā kā 15. septembris ir gada 196. diena. Šeit ir visu pieejamo datumu ekstrakcijas funkciju saraksts, no kuriem katram ir tikai viens arguments, no kura datums tiek iegūts:

- OTRA ()
- MINŪTA ()
- STUNDA()
- DIENA ()
- WEEK () - skaitlis 0 - 52, kas nosaka nedēļu gada laikā.
- MĒNESIS ()
- CETURKSNIS () - skaitlis 1 - 4, kas nosaka gada ceturksni.
- GADS ()
- DAYOFYEAR () - gada diena (piem. 15. septembris = 196).
- LAST_DAY () - konkrētā mēneša pēdējā diena.
- DATE () - datums GGGG-MM-DD formātā bez laika.
- TIME () laiks HH: II: SS formātā bez datuma.
- TO_DAYS () - dienu skaits kopš mūsu ēras 0.
- TO_SECONDS () - sekunžu skaits kopš mūsu ēras 0.
- UNIX_TIMESTAMP () - sekunžu skaits kopš laikmeta (1970. gada 1. janvāris)

Piemēram, ja varbūt vēlaties iegūt tikai mēnesi un gadu, kas tika izveidots visiem lietotājiem, varat izmantot šādu SQL priekšrakstu:

SELECT ID, MONTH (izveidots_at), YEAR (izveidots_at) NO lietotājiem;

Tas izgūtu visus ierakstus lietotājiem tabulu un parādiet ID #, mēnesi un gadu, kurā katrs lietotājs tika izveidots.

Ierakstu grupēšana pēc datuma perioda

Viena lieliska datuma funkciju izmantošana ir iespēja grupēt ierakstus pēc datuma perioda, izmantojot GRUPA PĒC jūsu SQL priekšrakstos. Piemēram, varbūt vēlaties apkopot visu 2020. gada pasūtījumu kopsummu pa mēnešiem. Jūs varētu izmantot SQL priekšrakstu, piemēram:

ATLASĪT MĒNEŠU (izveidots_at), SUM (summa) NO pasūtījumiem, KUR izveidots_ATSTARPĒJI '2020-01-01 00:00:00' UN '2020-12-31 23:59:59' GRUPA PA MĒNEŠIEM (izveidots_at);

Tādējādi tiks izgūti visi pasūtījumi, kas veikti 2020. gadā, sagrupēti pēc to izveides mēneša un atgriezti 12 ieraksti, kuros parādīta kopējā pasūtītā summa katru gada mēnesi.

Lūdzu, ņemiet vērā, lai uzlabotu rādītāja veiktspēju, vienmēr labāk izvairīties no datuma funkciju, piemēram, GADS () SQL klauzulu WHERE klauzulas ietvaros un tā vietā izmantojiet STARP operatoram, kā parādīts iepriekšējā piemērā.

Nekad vairs nejauciet ar datumiem

Izmantojot iepriekš minētās zināšanas, jūs tagad varat efektīvi strādāt, tulkot un veikt darbības datumos un laikos plašā lietošanas gadījumu klāstā.

Atcerieties, ka vienkāršības labad vienmēr izmantojiet UTC, strādājot ar datumiem, un efektīvi pārvaldiet, izmantojot iepriekš minētos padomus datumi jūsu programmatūrā, neatkarīgi no tā, vai tas ir vienkāršu aprēķinu pabeigšana vai pārskatu ērta apkopošana pēc datuma periodi.

Ja SQL lietojumprogramma ir nedaudz jauna, pārbaudiet tās būtiskas SQL komandas lai palīdzētu uzlabot jūsu SQL lietošanu.

E-pasts
Kā izveidot profesionālus pārskatus un dokumentus programmā Microsoft Word

Šajā rokasgrāmatā tiek pārbaudīti profesionālā ziņojuma elementi un pārskatīta dokumenta strukturēšana, veidošana un pabeigšana programmā Microsoft Word.

Saistītās tēmas
  • Nav norādīts
Par autoru
Mets Dižaks (Publicēti 16 raksti)Vairāk no Matt Dizak

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.