Paano Magtrabaho nang Mabisa Sa Mga Petsa at Oras sa MySQL

Paano Magtrabaho nang Mabisa Sa Mga Petsa at Oras sa MySQL

Ang mga petsa at oras ay mahalaga, makakatulong silang panatilihing maayos ang mga bagay, at isang mahalagang bahagi ng anumang pagpapatakbo ng software.





Ang mabisang pagtatrabaho sa kanila sa loob ng database ay maaaring tila nakalilito, gumagana man ito sa iba't ibang mga time zone, pagdaragdag / pagbabawas ng mga petsa, at iba pang mga operasyon.





Alamin ang iba't ibang mga pag-andar ng MySQL na magagamit upang madaling hawakan at pamahalaan ang mga petsa / oras sa loob ng iyong database.





Paggawa Sa Mga Time Zone

Upang matulungan ang pamantayan ng mga bagay, dapat ka lang magtrabaho kasama ang mga petsa / oras sa UTC time zone. Sa tuwing magtataguyod ka ng isang koneksyon sa MySQL database, dapat mong ilipat ang time zone sa UTC, na maaaring gawin sa sumusunod na pahayag ng SQL:

SET TIME_ZONE = '+0:00'

Dahil ang lahat ng mga petsa ay nai-save na ngayon sa UTC, palagi mong alam kung ano ang iyong ginagawa, ginagawa ang mga bagay na mas simple at tuwid.



kung paano magtanggal ng isang pananaw na account

Kung kinakailangan madali ka i-convert ang time zone ng anumang halaga ng datime / timestamp na may madaling gamiting CONVERT_TZ () Pag-andar ng MySQL. Kailangan mong malaman muna ang offset, halimbawa, ang PST sa kanlurang baybayin ng Hilagang Amerika ay UTC -08: 00, upang magamit mo ang:

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

Nagreresulta ito sa 2021-02-04 13:47:23 alin ang eksaktong tama. Ang tatlong argumento ay naipasa CONVERT_TZ () una ang datime / timestamp na iyong sinisimulan (gamitin ngayon () para sa kasalukuyang oras), ang pangalawa ay palaging magiging '+0: 00' dahil ang lahat ng mga petsa ay pinilit na UTC sa database, at ang huli ay ang offset na nais naming i-convert ang petsa sa.





Magdagdag / Magbawas ng Mga Petsa

Maraming beses na kailangan mong idagdag o ibawas mula sa mga petsa, tulad ng kung kailangan mong kunin ang mga tala mula noong isang linggo, o mag-iskedyul ng isang bagay sa isang buwan mula ngayon.

Sa kabutihang palad ang MySQL ay may mahusay DATE_ADD () at DATE_SUB () pagpapaandar na ginagawang madali ang gawaing ito. Halimbawa, maaari mong bawasan ang dalawang linggo mula sa kasalukuyang petsa kasama ang pahayag ng SQL:





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

Kung sa halip ay nais mong magdagdag ng tatlong araw sa isang umiiral na timestamp, gagamitin mo ang:

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

Pareho ang paggana ng parehong pag-andar, ang unang argumento ay ang timestamp na iyong sinisimulan, at ang pangalawang argument ay ang agwat upang magdagdag o magbawas. Ang pangalawang argument ay palaging naka-format ang parehong nagsisimula sa salita agwat sinundan ng isang numerong halaga at ang agwat mismo, na maaaring maging alinman sa mga sumusunod: pangalawa, minuto, oras, araw, linggo, buwan, quarter, taon.

Para sa isa pang halimbawa, kung nais mong makuha ang lahat ng mga pag-login na naganap sa nakaraang 34 minuto maaari kang gumamit ng isang pahayag ng SQL tulad ng:

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

Tulad ng nakikita mo, mababawi nito ang lahat ng mga tala mula sa mga pag-login talahanayan na may isang petsa ng pag-login na mas malaki kaysa sa kasalukuyang oras na minus 45 minuto, o sa madaling salita, ang nakaraang 45 minuto.

Kumuha ng Pagkakaiba sa Pagitan ng Mga Petsa

Minsan kailangan mong makuha kung gaano karaming oras ang lumipas sa pagitan ng dalawang mga petsa. Madali mong makuha ang bilang ng mga araw sa pagitan ng dalawang magkakaibang mga petsa kasama ang DATEDIFF pagpapaandar, tulad ng nasa ibaba SQL pahayag:

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

Ang DATEDIFF Ang pag-andar ay tumatagal ng dalawang mga argumento, na kapwa mga petsa / oras na selyo at binibigyan ang bilang ng mga araw sa pagitan nila. Ipapakita ng halimbawa sa itaas ang bilang ng mga araw na lumipas mula Disyembre 15, 2020 hanggang ngayon.

Upang makuha ang bilang ng mga segundo sa pagitan ng dalawang mga petsa, ang TO_SECONDS () ang pag-andar ay maaaring maging madaling gamiting, halimbawa:

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

Magreresulta ito sa bilang ng mga segundo sa pagitan ng ibinigay na dalawang mga petsa.

Mga Segment na Kinukuha Mula sa Mga Petsa

Mayroong iba't ibang mga pagpapaandar ng MySQL na nagbibigay-daan sa iyo upang madaling makakuha ng mga tukoy na segment mula sa mga petsa, tulad ng kung nais mo lamang ang buwan, ang araw ng taon, o ang oras. Narito ang ilang mga halimbawa ng mga naturang pag-andar:

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

Ang mga pahayag sa SQL sa itaas ay magreresulta sa 02 , ang kasalukuyang oras, at 196 bilang Setyembre 15 ay ang ika-196 araw ng taon. Narito ang isang listahan ng lahat ng mga pag-andar sa pagkuha ng petsa na magagamit, ang bawat isa ay kumukuha lamang ng isang pagtatalo, ang petsa na nakuha mula sa:

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

Halimbawa, kung marahil ay nais mo lamang makuha ang buwan at taon kung saan nilikha ang lahat ng mga gumagamit, maaari kang gumamit ng pahayag na SQL tulad ng:

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

Bawiin nito ang lahat ng mga tala sa loob ng mga gumagamit talahanayan at ipakita ang id #, buwan at taon bawat gumagamit ay nilikha sa.

Mga Rekord ng Pagpapangkat ayon sa Panahon ng Petsa

Ang isang mahusay na paggamit ng mga pag-andar ng petsa ay ang kakayahang i-grupo ang mga tala sa pamamagitan ng paggamit ng panahon ng petsa GRUPO NI sa loob ng iyong mga pahayag sa SQL. Halimbawa, marahil nais mong hilahin ang kabuuang halaga ng lahat ng mga order sa 2020 na naka-grupo ayon sa buwan. Maaari mong gamitin ang isang pahayag ng SQL tulad ng:

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

Bawiin nito ang lahat ng mga order na inilagay sa taong 2020, pinangkat ang mga ito ayon sa buwan na nilikha, at ibabalik ang 12 mga tala na ipinapakita ang kabuuang halaga ng order sa bawat buwan ng taon.

Mangyaring tandaan, para sa mas mahusay na pagganap ng index, palaging pinakamahusay na iwasan ang paggamit ng mga pagpapaandar sa petsa tulad ng TAON () sa loob ng WHERE sugnay ng mga pahayag ng SQL, at sa halip ay gamitin ang SA pagitan operator tulad ng ipinakita sa halimbawa sa itaas.

Huwag na Maging Malito Pa Sa Mga Petsa

Gamit ang kaalaman sa itaas maaari mo na ngayong mahusay na magtrabaho, isalin at isagawa ang mga pagpapatakbo sa mga petsa at oras sa isang malawak na hanay ng mga kaso ng paggamit.

Tandaan na palaging gumamit ng UTC kapag nagtatrabaho kasama ang mga petsa para sa pagiging simple, at gamitin ang mga tip sa itaas upang mahusay na pamahalaan ang mga petsa sa loob ng iyong software, maging upang makumpleto ang simpleng mga kalkulasyon o madaling hilahin ang mga ulat na naka-grupo ayon sa mga yugto ng petsa.

Kung medyo bago ka sa SQL, tiyaking suriin ang mga ito mahahalagang utos ng SQL upang makatulong na mapabuti ang iyong paggamit ng SQL.

Magbahagi Magbahagi Mag-tweet Email Paano Lumikha ng Mga Propesyonal na Ulat at Dokumento sa Microsoft Word

Sinusuri ng gabay na ito ang mga elemento ng isang propesyonal na ulat at sinusuri ang pagbubuo, pag-istilo, at pagtatapos ng iyong dokumento sa Microsoft Word.

Basahin Susunod
Mga Kaugnay na Paksa Tungkol sa May-akda Matt Dizak(18 Artikulo Nai-publish) Higit pa Mula kay Matt Dizak

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe