Kā efektīvi strādāt ar datumiem un laikiem MySQL

Kā efektīvi strādāt ar datumiem un laikiem MySQL

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





Efektīva sadarbība ar tiem datu bāzē dažreiz var šķist mulsinoša, neatkarīgi no tā, vai tā darbojas dažādās laika zonās, datumu pievienošana / atņemšana un citas darbības.





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





Darbs ar laika zonām

Lai palīdzētu standartizēt lietas, strādājiet tikai ar datumiem / laikiem UTC laika joslā. Katru reizi, kad izveidojat savienojumu ar MySQL datu bāzi, laika joslai vajadzētu pārslēgties uz UTC, ko var izdarīt, izmantojot šādu SQL paziņojumu:

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.



ko darīt ar jaunu klēpjdatoru

Vajadzības gadījumā jūs varat viegli pārveidot laika joslu ar jebkuru datuma / laika zīmoga vērtību CONVERT_TZ () MySQL funkcija. Vispirms jums jāzina nobīde, piemēram, PST Ziemeļamerikas rietumu krastā ir UTC -08: 00, tāpēc varat izmantot:

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 tika 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 datubāzē ir spiesti ievadīt UTC, un pēdējais ir nobīde, kuru mēs vēlamies pārvērst datumā.





Pievienot / atņemt datumus

Daudzas reizes jums ir jāpievieno datumi vai jāatņem no tiem, piemēram, ja jums ir nepieciešams izgūt ierakstus pirms nedēļas vai ieplānot kaut ko pēc mēneša.

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





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

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

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

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

Citā piemērā, ja vēlaties izgūt visus pieteikumus, kas notikuši pēdējo 34 minūšu laikā, varat izmantot SQL paziņojumu, piemēram:

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

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

Atšķirība starp datumiem

Dažreiz jums jānoskaidro, cik daudz laika ir pagājis starp diviem datumiem. Jūs varat viegli iegūt dienu skaitu starp diviem dažādiem datumiem, izmantojot DATEDIFF funkciju, piemēram, zemāk esošo SQL paziņojumu:

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

The DATEDIFF funkcijai ir divi argumenti, abi ir datuma / laika zīmogi un norāda dienu skaitu starp tiem. Iepriekš minētais piemērs parādīs dienu skaitu, kas pagājis no 2020. gada 15. decembra līdz šodienai.

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

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

Rezultātā starp abiem norādītajiem datumiem būs sekunžu skaits.

Izņemiet segmentus no datumiem

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

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

Iepriekš minētie SQL paziņojumi radīs 02 , pašreizējā stundā un 196 jo 15. septembris ir gada 196. diena. Šeit ir saraksts ar visām pieejamajām datuma izvilkšanas funkcijām, katrā no tām tiek ņemts tikai viens arguments, datums tiek iegūts no:

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

Piemēram, ja jūs, iespējams, vēlējāties izgūt tikai mēnesi un gadu, kurā tika izveidoti visi lietotāji, varat izmantot šādu SQL priekšrakstu:

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

Tādējādi tiktu izgūti visi ieraksti lietotājiem tabulā un parādiet katra lietotāja izveidošanas ID#, mēnesi un gadu.

Ierakstu grupēšana pēc datuma perioda

Lieliska datuma funkciju izmantošana ir iespēja grupēt ierakstus pēc datuma perioda, izmantojot GROUP BY jūsu SQL paziņojumos. Piemēram, varbūt vēlaties izņemt visu pasūtījumu kopējo summu 2020. gadā, sagrupējot pēc mēneša. Jūs varat izmantot SQL paziņojumu, piemēram:

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ādējādi tiktu izgūti visi 2020. gadā veiktie pasūtījumi, sagrupēti pēc to izveidošanas mēneša un atgriezti 12 ieraksti, kuros norādīta kopējā pasūtītā summa katru gada mēnesi.

Lūdzu, ņemiet vērā: lai nodrošinātu labāku indeksa veiktspēju, vienmēr vislabāk ir neizmantot tādas datuma funkcijas kā, piemēram GADS () SQL paziņojumu WHERE klauzulā un tā vietā izmantojiet STARP operators, kā parādīts iepriekš minētajā piemērā.

Nekad vairs nejaucieties ar datumiem

Izmantojot iepriekš minētās zināšanas, tagad varat efektīvi strādāt, tulkot un veikt darbības datumos un laikos visdažādākajos lietošanas gadījumos.

Atcerieties vienmēr izmantot UTC, strādājot ar datumiem vienkāršības labad, un izmantojiet iepriekš minētos padomus, lai efektīvi pārvaldītu datumus savā programmatūrā neatkarīgi no tā, vai pabeigt vienkāršus aprēķinus vai viegli izvilkt pārskatus, kas sagrupēti pēc datumu periodiem.

Ja esat nedaudz iepazinies ar SQL, noteikti pārbaudiet šos būtiskas SQL komandas lai palīdzētu uzlabot jūsu SQL izmantošanu.

Kopīgot Kopīgot Čivināt E -pasts Kā izveidot profesionālus pārskatus un dokumentus programmā Microsoft Word

Šajā rokasgrāmatā ir apskatīti profesionāla ziņojuma elementi un pārskatīta jūsu dokumenta strukturēšana, veidošana un pabeigšana programmā Microsoft Word.

Lasīt Tālāk
Saistītās tēmas Par autoru Mets Dizaks(Publicēti 18 raksti) Vairāk no Matt Dizak

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu