3.1 Listahan ng mga function para sa pagtatrabaho sa petsa at oras

Ang petsa at oras ay isa sa mga pinakakaraniwang uri ng data na nakaimbak sa mga database. Iyon ang dahilan kung bakit ang listahan ng mga pag-andar para sa pagtatrabaho sa kanila ay napakalaki. Narito ang mga pinakasikat:

# Function Paglalarawan
1 CURDATE() Ibinabalik ang kasalukuyang petsa
2 CURTIME() Ibinabalik ang kasalukuyang oras
3 NGAYON(), LOCALTIME() Ibinabalik ang kasalukuyang petsa at kasalukuyang oras
4 YEAR() Ibinabalik ang taon mula sa petsa
5 MONTH() Ibinabalik ang buwan mula sa isang petsa
6 DAY(), DAYOFMONTH() Ibinabalik ang araw mula sa isang petsa
7 ORAS() Ibinabalik lamang ang mga oras mula sa oras
8 MINUTE() Nag-aanunsyo ng mga minuto mula sa oras
9 IKALAWANG() Ibinabalik ang mga segundo mula sa oras
10 DAYNAME() Ibinabalik ang pangalan ng araw ng linggo: Lunes, ...
labing-isa MONTHNAME() Ibinabalik ang pangalan ng buwan: Enero, ...
12 LINGGO() Ibinabalik ang linggo mula sa isang petsa
13 WEEKDAY() Ibinabalik ang bilang ng araw ng linggo: Lunes - 0, Martes - 1
14 WEEKOFYEAR() Ibinabalik ang bilang ng linggo ng taon
15 ARAW SA ISANG LINGGO() Ibinabalik ang bilang ng araw ng linggo: Linggo - 1, Lunes - 2
16 DAYOFYEAR() Ibinabalik ang araw ng taon: 1-366
17 DATE() Ibinabalik lamang ang petsa mula sa isang bagay na "datetime".
18 ADDDATE() Nagdaragdag ng mga araw sa isang petsa
19 SUBDATE() Nagbabawas ng mga araw mula sa isang petsa
20 ADDTIME() Nagdadagdag ng oras-oras
21 SUBTIME() Ibinabawas ang oras mula sa oras

Sinadya kong i-grupo ang mga function sa maliliit na grupo para mas madaling maunawaan kung paano magtrabaho sa kanila. Sa ibaba ay isasaalang-alang natin ang isang function mula sa bawat pangkat.

Makakahanap ka ng kumpletong listahan ng mga function para sa pagtatrabaho sa petsa at oras sa link: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 Mga function ng pagtawag

Oo nga pala, dahil marami kaming natututunan na function, sa tingin ko ay nakakatulong na banggitin na ang operator ay SELECThindi kailangang gamitin sa FROM. Maaari nitong ibalik ang halaga ng anumang expression. Ang pangkalahatang view kung saan ay ibinigay ng template:

SELECT expression

At kung gusto mong tumawag ng ilang function, kailangan mong magsulat ng code tulad ng:

SELECT function(options)

Sa ibaba ay magbibigay ako ng ilang mga halimbawa ng pagpapatakbo ng operator SELECTnang walang recourse sa mga talahanayan:

# Hiling Resulta
1 PUMILI 1+1 2
2 PUMILI 13 MOD 5 3
3 PUMILI NG RAND() 0.20771444235715497
4 PUMILI NG CURDATE() 2022-06-04
5 PUMILI NG CURTIME() 00:06:02
6 PUMILI NGAYON() 2022-06-04 00:06:43

At, tulad ng nakikita mo, sa talahanayan sa itaas, upang makuha ang kasalukuyang petsa at oras, kailangan mo lamang gamitin ang isa sa mga function:

  • CURDATE()- kasalukuyang petsa;
  • CURTIME()- oras ngayon;
  • NOW()– kasalukuyang petsa at oras.

3.3 Pagpapangkat ng data ayon sa taon at buwan

Alalahanin natin ang talahanayan ng gawain na may mga gawain para sa mga empleyado. Subukan nating pangkatin ang mga gawain mula sa talahanayang ito ayon sa mga taon. Upang gawin ito, ginagamit namin ang function YEAR(), na nagbabalik ng taon mula sa petsang ipinasa dito.

Ang unang bersyon ng aming query ay magiging ganito:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

Ang magiging resulta ng query na ito ay:

id employee_id pangalan taon deadline
1 1 Ayusin ang isang bug sa frontend 2022 2022-06-01
2 2 Ayusin ang isang bug sa backend 2022 2022-06-15
3 5 Bumili ng kape 2022 2022-07-01
4 5 Bumili ng kape 2022 2022-08-01
5 5 Bumili ng kape 2022 2022-09-01
6 (WALA) Linisin ang opisina (WALA) (WALA)
7 4 Masiyahan sa buhay (WALA) (WALA)
8 6 Masiyahan sa buhay (WALA) (WALA)

Makikita natin na ang lahat ng row ay may parehong taon, kaya gumamit tayo ng dalawang field - taon at buwan. Ang pangalawang bersyon ng aming query ay magiging ganito:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

Ang magiging resulta ng query na ito ay:

id employee_id pangalan taon buwan deadline
1 1 Ayusin ang isang bug sa frontend 2022 6 2022-06-01
2 2 Ayusin ang isang bug sa backend 2022 6 2022-06-15
3 5 Bumili ng kape 2022 7 2022-07-01
4 5 Bumili ng kape 2022 8 2022-08-01
5 5 Bumili ng kape 2022 9 2022-09-01
6 (WALA) Linisin ang opisina (WALA) (WALA) (WALA)
7 4 Masiyahan sa buhay (WALA) (WALA) (WALA)
8 6 Masiyahan sa buhay (WALA) (WALA) (WALA)

Hindi ko sasabihin sa iyo kung paano ipangkat ang mga gawain ayon sa taon at buwan - napag-aralan mo na ito: gamitin ang operator GROUP BY.